学习javascript系列之变量

在javascript全局变量中,未加var声明的全局变量和加上var声明的全局变量是不同的,虽然都是window对象的属性。

var a = 1;
window.a            //1
delete a             //false;

  通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。

b = 2;
window.b            //2

  无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。

delete b             // true
严格模式下声明时不带var发生错误。

任务链进行部分var声明变量时易产生全局变量

function foo() {
   var a = b = 0;
   // ...
}

//此现象发生的原因在于这个从右到左的赋值,首先,是赋值表达式b = 0,此情况下b是未声明的。
等价于
var a = (b = 0);

 

这里b全局变量了、

//JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析)。但并不会有赋值操作。等价于
var  someVar;   //undefined 
myname = "yangxunwu"; 

function func() {
    alert(myname); // "undefined"
    var myname = "local";
    alert(myname); // "local"
}

func();
//由于变量声明的置顶,这个函数等价于
function func() {
     var myname;    //myname被当作局部变量了。但未声明
    alert(myname); // "undefined"
    var myname = "local";
    alert(myname); // "local"
}

 

  

posted @ 2015-09-05 21:54  xnuwu  阅读(118)  评论(0编辑  收藏  举报