标签:原理 动作 维护 pre 其他 需要 span 收集 turn
引擎:从头到尾负责整个 JavaScript 程序的编译和执行过程
编译器:负责语法分析及代码生成等
作用域:负责收集并维护所有变量的查询
var a = 2;
1、在词法分析中,遇到 var a,编译器会询问当前作用域是否有该变量。是,忽略该变量继续编译。否,要求作用域声明一个新的变量 2、在生成代码中,编译器对 a = 2 进行赋值操作。首先询问作用域,在当前作用域是否存在该变量。是,使用该变量。否,引擎继续查找该变量
如果引擎找到了 a ,就将 2 赋值给它。否则抛出异常
变量赋值操作会执行两个动作,一个是编译器在当前作用域声明该变量,然后引擎在作用域中查找该变量,进行赋值
function foo(a) { console.log(a) //2 } foo(2);
function foo(a){ var b = a; return a + b; } var c = foo(2);
标签:原理 动作 维护 pre 其他 需要 span 收集 turn
原文地址:https://www.cnblogs.com/wzndkj/p/12297855.html