词法作用域
1、概念
变量的作用域 是由代码 书写的位置决定 而不是 变量被使用的位置决定;只有函数可以限定作用域。
2、作用域链
在JavaScript中使用变量,JavaScript解释器首先在当前作
用域中搜索是否有该变量的定义,如果有,就是用这个变量;如果没有就到父域中寻找该变量.
以此类推,直到最顶级作用域,仍然没有找到就抛出异常”变量未定义”.
注意:如果要找的变量在链的函数参数中也会停止查找,表明已经找到
var num = 10;
(function fn(){
var fn2 = function(){
console.log(num) //10
}
fn2()
})();
var num = 10;
(function fn(){
var fn2 = function(n){
console.log(num) //10
}
fn2()
})();
但是
var num = 10;
(function fn(){
var fn2 = function(num){
console.log(num) //undefined
}
fn2()
})();
还没有评论,来说两句吧...