2、变量var关键字

我们在看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定义,就会报错。

posted @ 2016-05-02 23:04  丁少华  阅读(275)  评论(0编辑  收藏  举报