JavaScript中的函数提升

提升是一种JavaScript技术,可在代码执行开始之前将变量和函数声明移至其作用域的顶部。在范围内,无论在何处声明函数或变量,它们都将移至其范围的顶部。

请注意,提升仅在声明保留在原处时移动声明。

示例

console.log(functionBelow("Hello"));
function functionBelow(greet) {
   return `${greet} world`;
}
console.log(functionBelow("Hi"));

输出结果

Hello world
Hi world

请注意,函数声明是在调用之后但仍然被调用的。由于功能提升,这是可能的。

还要注意,当您分配诸如变量之类的函数时,它不起作用。

console.log(functionBelow("Hello"));
var functionBelow = function(greet) {
   return `${greet} world`;
}
console.log(functionBelow("Hi"));

这将失败并显示错误:functionBelow不是函数

如果删除var,它将失败并显示以下错误:functionBelow未定义

请注意,使用var声明时,它已作为上下文中的变量吊起。但是它仍然不确定。这称为可变提升。由于此属性,JavaScript中永远不会悬挂匿名和箭头功能。