本文实例讲述了javascript变量声明的方法。分享给大家供大家参考。具体分析如下:

js中使用一个变量之前应当先声明。变量使用关键字var来声明。

如果未在var声明语句中给变量指定初始值,则该变量值为undefined。

不用在声明变量时指定变量类型,js变量可以是任意数据类型。

使用var语句重复声明变量是合法且无害的。如果重复声明带有初始化器,则就和简单的赋值语句没啥区别。

如果试图读取一个没有声明的变量,则js会报错。在ECMAScript5严格模式下,给一个没有声明的变量赋值也会报错;然而从历史上来说,在非严格模式下,如果给一个未声明变量赋值,js实际上会给全局对象创建一个同名属性,且貌似它工作起来像一个正确声明的全局变量。这意味着你可以侥幸不声明全局变量,但这是一个坏习惯会造成很多bug,最好始终使用var来声明变量。

在函数体内,同名的局部变量会覆盖全局变量。

尽管全局作用域写代码可以不写var语句,但声明局部变量时必须使用var语句,参考如下代码:

scope = "global";

function foo(){

scope="local"

//fk!我们刚刚修改了全局变量!!!

}

在类似C语言的编程语言中,花括号中每一段代码都有各自的作用域,且变量在声明它们代码段之外是不可见的,我们称之为块级作用域(block scope);而js中没有块级作用域,而是取而代之的使用了函数作用域(function scope):变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的(无论是内嵌套还是外嵌套?)

js的函数作用域指在函数内声明的所有变量在函数体内始终是可见的,这意味着变量在声明前甚至可以使用了。js的这个特性非正式的称为声明提前(hoisting),即js函数里声明的所有变量(但没有赋值)都被“提前”至函数体的顶部。

var scope = "global";

function f(){

console.log(scope);

//输出"undefined"而不是"global"

var scope = "local";

//变量在这里赋初始值,但变量在函数体内任何地方均是有定义的

console.log(scope);

//输出"local"

以上代码等价于:

function f(){

var scope;

console.log(scope);

scope = "local";

console.log(scope);

}

当声明一个js全局变量时,实际上定义了全局对象的一个属性。

当用var声明一个变量时,创建的这个属性时不可配置的,即无法用delete运算符删除;但当你没有使用严格模式并给一个未声明的变量赋值的话,js会自动创建一个全局变量,以这种方式创建的变量是全局对象的正常可配置属性,是可以删除的:

var x = 1;

y = 2;

this.z = 3; //同上

delete x; //返回false,无法删除变量

delete y; //返回true,变量被删除

delete this.z //同上

希望本文所述对大家的javascript程序设计有所帮助。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

js php 变量声明,javascript变量声明实例分析_javascript技巧相关推荐

  1. 用php语句绘制圆锥,JS+canvas画一个圆锥实例代码_javascript技巧

    本篇文章给大家讲解html中用canvas函数配合JS画出一个圆锥形的图形实例,canvas是html5中新增加的新属性,对HTML5中的canvas感兴趣的朋友学习测试下吧. 以下是我们给大家分享是 ...

  2. php 判断类型array,判断一个变量是数组Array类型的方法_javascript技巧

    在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...

  3. android + javascript 相互通信实例分析

    1.  AndroidManifest.xml中必须使用许可 "android.permission.INTERNET", 否则会出Web page not available错误 ...

  4. javascript php 界面,js实现卡片式项目管理界面UI设计效果_javascript技巧

    这是一款非常有创意的卡片式项目管理界面UI设计效果.该UI设计中,将各个项目以卡片的方式堆叠排列在屏幕上,当点击了其中的某个项目的时候,该项目图片会全屏放大,向下滚动鼠标可以看到该项目的介绍信息. 该 ...

  5. php九九乘法表隔行换色,JavaScript实现99乘法表及隔行变色实例代码_javascript技巧...

    项目需求:实现在页面中输出99乘法表.(要求:以每三行为一组,实现隔行变色(颜色为白,红,黄(也可自己定义)),鼠标滑过每一行,行背景颜色变为蓝色,鼠标离开又恢复原来的颜色),隔行变色的效果需要用if ...

  6. treeview 展开节点php,javascript实现TreeView 无刷新展开的实例代码_javascript技巧

    { var tempObj = objchild[i]; if(tempObj.tagName=="INPUT" && tempObj.type == " ...

  7. php中用js自定义弹窗,用js实现的自定义的对话框的实现代码_javascript技巧

    大家好,我们平时在使用Javascript的时候,经常会需要给用户提供一些反馈信息,完成这个功能有很多种方法.但在平时开发中午我们用的最多的可能就是alert这个函数了(这里只说一般情况,不排除个别高 ...

  8. ocx js php,JS实现OCX控件的事件响应示例_javascript技巧

    JS支持OCX控件的事件(event),当OCX控件定义的事件发生时,JS可以捕获该事件并对事件进行相应的处理. 个人理解,其实就是事件的响应由谁来完成,OCX控件自身肯定是可以实现的,JS提供的这种 ...

  9. php 代码 骂人,网页前台通过js非法字符过滤代码(骂人的话等等)_javascript技巧

    代码一:keypress事件时使用 /****************************************************/ //功能:过滤非法字符 //说明:keypress事件 ...

最新文章

  1. 大数据应用之双色球算奖平台总体设计大纲篇一
  2. NYOJ-括号配对问题 技巧性的非栈道法
  3. 洛谷——P2118 比例简化
  4. pytorch中的pre-train函数模型引用及修改(增减网络层,修改某层参数等)
  5. [转]理解ThreadLocal
  6. Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value
  7. 把好最后一道关,Docker容器测试全探索
  8. 三周第二次课(4月3日)
  9. msfconsole常用搜索命令search
  10. 天津大学学硕和专硕的区别_专硕学硕的区别你弄明白了吗?听听学长学姐怎么说...
  11. 概率论的学习和整理--番外4:学习期望之前,先学习平均数(包括算术平均数,几何平均数,调和平均数等),众数,中位数等概念差别。
  12. Excel如何快速制作二维码图片?
  13. 迅雷、旋风、快车的下载地址加密算法解析
  14. 做数据分析如何从囚徒困境到合作的进化
  15. 美图秀秀自动化测试工程师笔试面试
  16. ref使用之react / react hook
  17. HTML中详述jQuery事件绑定方式
  18. 几个有关智能的小问题
  19. 2009中国翻译服务产业论坛志愿者招募公告
  20. 天天生鲜项目——用户订单页

热门文章

  1. 数据库复习——关系数据理论中的几个重要概念(闭包,逻辑蕴含,覆盖...)
  2. Failed to resolve: com.github.chrisbanes:PhotoView:1.2.6 Show in File Show i
  3. 服务器连接硬盘出错,IBM服务器硬盘常见问题与故障诊断
  4. Oracle-高效分页
  5. js 正则例子 验证美国电话号码
  6. python大学课程-Coursera上Python课程(公开课)汇总
  7. 介绍与评测Intel HLE与RTM技术
  8. 手机CMWAP上网设置(完全版)
  9. 宠物商店管理系统-总结
  10. 关于XMLHttpRequest的xhr.readyState和 xhr.status 的简单使用