js进阶(1.2)词法作用域

2017-12-13  本文已影响0人  slTrust

fn1 调用的时候不会立即执行
而是会生成一个抽象语法树
校验里面的每句话 如果有错误就停止执行
没错再从头开始执行

一个函数能访问那些变量 在做词法分析的时候就确定了

词法树分析的是语义
只能确认a就是这个函数内部的a
不能确定的是“值”

var global = 1;
function fn1(param1){
    var local1 = 'local1';
    var local2 = 'local2';
    function fn2(param2){
        var local2 = 'fn2 local2';
        console.log(local1);
        console.log(local2);
    }

    function fn3(){
        var local2 = 'fn3 local2';
        fn2(local2);
    }
}

经典面试题

var a = 1;
function b(){
  console.log(a)  // a一定是1吗?
}

你在看看

var a =1;
function b(){
  console.log(a);
}
...若干代码后 突然一句
a = 2;
b();  //

上一篇下一篇

猜你喜欢

热点阅读