简单范围练习

时间:2017-07-16 17:48:54

标签: javascript

function a() {  
    var a = 1;  
    console.log(a);  
    var b = function() {  
        console.log(a);  
        var c = function() {  
            console.log(a);  
        }  
    }  
}  
a();  
b();  
c();  

尝试调用所有3个函数这也不起作用,它说b没有定义;

1 个答案:

答案 0 :(得分:0)

未定义,因为您错过了范围点。 b作为函数仅在a内可用。 c作为函数仅在b内可用。 例如,以下代码可以。

function a() {  
  var a = 1;  
    console.log(a);  
    var b = function() {  
      console.log(a);  
      var c = function() {  
          console.log(a);  
      }  
      c(); // c is available because we are inside the function b
    }  
    b(); // b is available because we are inside the function a
  }
a();  

如果您不理解这一点,您可能应该阅读范围,因为这是javascript中非常基本的关键设备。