【JavaScript】预解析
    		       		warning:
    		            这篇文章距离上次修改已过444天,其中的内容可能已经有所变动。
    		        
        		                
                在JavaScript中,预解析指的是在代码执行前,JavaScript引擎将变量和函数声明提升到它们作用域的顶部的过程。这意味着变量和函数声明会被提前,但赋值不会提前。
变量的预解析:
console.log(globalVar); // 输出 undefined
var globalVar = 'Hello, World!';在上面的代码中,虽然变量globalVar是在后面定义的,但是在执行console.log之前,JavaScript引擎会将其声明提升到作用域的顶部,因此在输出时globalVar已经存在,但是值为undefined,直到执行到var globalVar = 'Hello, World!';时才被赋值。
函数的预解析:
console.log(globalFunc); // 输出函数定义
globalFunc(); // 输出 'Hello, World!'
 
function globalFunc() {
  console.log('Hello, World!');
}在上面的代码中,虽然函数globalFunc是在后面定义的,但是在执行console.log之前,JavaScript引擎会将其声明提升到作用域的顶部,因此在输出时globalFunc已经是可用的,可以调用,但是调用globalFunc()会输出'Hello, World!'。
需要注意的是,函数表达式不会发生预解析,例如:
console.log(funcExpr); // 输出 undefined
var funcExpr = function() {
  console.log('This will not be executed.');
};在这个例子中,funcExpr在执行console.log时仍然是undefined,因为函数表达式不会进行提升。
评论已关闭