您的位置:首页 > 其它

2、变量var关键字

2016-05-02 23:04 295 查看
我们在看js声明变量的时候,经常会发现有的变量前会带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定义,就会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: