You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
JavaScript执行代码会更加复杂,首先js引擎会对代码优化,代码会在执行之前进行编译。
下面我们以var a = 1;来描述一下整个过程;
首先,编译器会将其拆成词法单元,进而解析成树结构等;具体来说就是:
编译过程中,解析器会将 var a = 1 分拆成 var a 和 a = 1 两句来执行; var a编译器会查找当前作用域是否存在 a,如果存在则忽略,否则会在当前作用域声明一个变量 a;接下来由引擎执行 a = 1,同样会首先在当前作用域内超找是否存在一个为 a 的变量,如果有则使用这个变量,也就是说把 1 赋值给它,倘若没有则继续向外层作用域超找,以此类推;若最终未找到,则报错;