2、变量var关键字
2016-05-02 23:04
295 查看
我们在看js声明变量的时候,经常会发现有的变量前会带var 但又的则没有,那么这究竟有什么区别呢?
如果这种情况发生在函数里的话, 加var定义的变量是局部变量,不加var定义的就成了全局变量。
[Web浏览器] "dsh"
[Web浏览器] "wx"
在全局作用域下,使用var定义的变量不可以delete,没有var 定义的变量可以delete.
这也就说明隐含全局变量严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以。
[Web浏览器] "dsh"
[Web浏览器] "Uncaught ReferenceError: y is not defined"
使用var 定义变量还会提升变量声明,但不用var的变量则不会
[Web浏览器] "undefined"
[Web浏览器] "Uncaught ReferenceError: y is not defined"
在ES5的'use strict'模式下,如果变量没有使用var定义,就会报错。
如果这种情况发生在函数里的话, 加var定义的变量是局部变量,不加var定义的就成了全局变量。
//使用var var y="dsh"; function test(){ var y="wx"; } test(); console.log(y);
[Web浏览器] "dsh"
//不使用var var y="dsh"; function test(){ y="wx"; } test(); console.log(y);
[Web浏览器] "wx"
在全局作用域下,使用var定义的变量不可以delete,没有var 定义的变量可以delete.
这也就说明隐含全局变量严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以。
var x="dsh"; y="wx"; delete x; delete y; console.log(x); console.log(y);
[Web浏览器] "dsh"
[Web浏览器] "Uncaught ReferenceError: y is not defined"
使用var 定义变量还会提升变量声明,但不用var的变量则不会
console.log(x);//提升变量x为undefined console.log(y);//不提升,y没有定义过。y is not defined var x="dsh"; y="wx";
[Web浏览器] "undefined"
[Web浏览器] "Uncaught ReferenceError: y is not defined"
在ES5的'use strict'模式下,如果变量没有使用var定义,就会报错。
相关文章推荐
- 类的加载过程
- TensorFlow教程01:针对机器学习初学者的MNIST实验——MNIST介绍
- Google产品设计师:从二维界面到虚拟现实
- Coax Transformers[转载]
- 10周年整
- Spark-1.5/1.6的新特性
- leetcode——41——First Missing Positive
- strtok 与 fgets, atoi
- OC里面的类
- Swift字符串的插入、删除和替换-备
- android Spinner 例子
- 我的小成就故事
- Struts2架构思想、配置文件
- 超宽带技术发展
- C++算法与数据结构学习笔记------单链表实现多项式
- EditText禁止输空格
- 有关ESB和微服务的一些好文
- smcs.rsp
- docker实践入门之三
- 转载:PostgreSQL的系统函数分析记录