根据吊装定义:
提升是一种JavaScript机制,其中变量和函数 声明在执行代码之前移到其作用域的顶部
为什么函数声明不能被悬挂而函数表达式不能被悬挂?
答案 0 :(得分:1)
根据MDN,
例如,从概念上讲,对提升的严格定义表明,变量和函数声明实际上已移到代码的顶部,但这实际上不会发生。而是在编译阶段将变量和函数声明放入内存中,但仍保留在代码中键入它们的位置。
如您所见,在函数表达式中,实际函数是分配给命名变量的值。因此,该命名变量被悬挂。即使您分配了命名函数,它也不会被吊起,因为它不是声明,将在以后创建。
示例:
function test() {
console.log(fn, foo);
var fn = function foo() {}
}
test();