我正在观看一个关于 javascript 范围的视频,它说就在浏览器解释 java 脚本代码之前,它实际上涉及一个快速编译步骤(可以说不完全是“编译”,因为它不涉及制作中间文件),它注册变量和各自范围内的函数声明。所以如果我写:
var a = 3;
function foo(){
var c = 2;
}
在评估上述表达式之前,这意味着忽略 RHS 部分,变量“a”和函数“foo”将在全局范围内注册,在“foo”范围内,变量“c”将被注册。在此编译步骤之后,将对表达式的值进行评估。
但是当我们写的时候会发生什么:
var a = function(){
var c;
}
编译步骤是否只是在全局范围内注册变量'a'并跳过函数声明和变量'c'声明,因为编译步骤应该跳过RHS部分并且评估表达式进入解释器部分?