功能声明是否在变量声明之前悬挂?

do functional declaration are hoisted before the variable declaration?

提问人:Praveen 提问时间:7/22/2023 最后编辑:Praveen 更新时间:7/28/2023 访问量:41

问:

如果函数声明在变量声明之前提升。在这种情况下,为什么我得到的是函数定义而不是未定义。

function a(){}
var a;
console.log(a); // ƒ a(){}

我预计变量声明将覆盖函数声明并变得未定义

JavaScript var 函数声明 提升

评论

1赞 Bergi 7/22/2023
"MDN 说功能声明在变量声明之前被提升“——它在哪里这么说?
1赞 Akeel Ahmed Qureshi 12/1/2023
你可以从这里得到答案:- stackoverflow.com/questions/53875467/...

答:

0赞 Asad Gulzar 7/22/2023 #1

由于您没有为变量赋值,因此在提升 JS 时,将未定义的值放置到变量中。undefined 不会覆盖任何值,这就是你得到一个函数的原因。

function a(){}
var a=1;
console.log(a); // result will be 1

评论

0赞 VLAZ 12/1/2023
"undefined 不会覆盖任何值,这就是你得到一个函数的原因。这是不正确的 - 微不足道地表明 is 的值是 。此外,提升变量不会重新赋值。这就是值不变的真正原因。x = 1; x = undefined;xundefined