变量的作用域链

  • 一个变量的查找,找这个变量最近定义var的地方,找到了就不会再继续向外找了.

下面用代码实例说明:

  • 实例1:

var a = 10;
function show(){
    console.log(a);
}
    show();  // 10
  • 实例2

var a = 10;
function show(){
    console.log(a);
    a = 20;
}
    show();  // 还是10
  • 实例3
    实例3

局部变量的误解

  • for循环
    由于JavaScript的变量作用域实际上是函数内部,我们在for循环等语句块中是无法定义具有局部作用域的变量的:

function foo() {
    for (var i= 0; i < 100; i++) {
            //
    }
    i += 100; // 
    document.write(i); // 200
}
    foo();
  • if 条件语句

if(true){
    var i = 100;
}
console.log(i); // 100

为了解决块级作用域,ES6引入了新的关键字let,用let替代var可以申明一个块级作用域的变量


sdbxpjzq
150 声望3 粉丝

人生就像写代码,每一次成长就是一次更新,每一次收获就是一个迭代。所以...得写好代码,写好人生(就算现在写不出好的代码,可至少有一颗迭代的心),付出才可能有回报。