作用域链经典问题
<script>
function fn1(){
var i="a";
function fn2(){
i="b";
function fn3(){
i="c";
}
fn3();
}
fn2();
console.log(i);
}
fn1();
</script>
结果:c
解析如下:牢记作用作用域链四条原则
1、 当对一个变量产生引用时,要遵循作用域链原则。尝试引用一个变量,先在当前作用域寻找该变量的声明语句(var 变量名)。有,直接使用该变量。
2、 如果没有,继续向上一级作用域寻找var声明语句。有,直接使用
3、 如果还是没有,继续向上一级作用域寻找var声明语句。有,直接使用
4、周而复始,直到查询到全局作用域,依然没有var声明语句,系统会隐式(自动)地创建该变量的声明语句


浙公网安备 33010602011771号