gpt4 book ai didi

javascript - 为什么 `var a= function(){}` 在以下情况下与 `function a(){}` 相似?

转载 作者:行者123 更新时间:2023-12-02 15:53:57 29 4
gpt4 key购买 nike

我不明白这个OP接受的答案的一部分:

Javascript function scoping and hoisting

作者说:

"

此外,在这种情况下,

function a() {}

行为与

相同
var a = function () {};

”。

我知道函数表达式与函数声明不同,至少对于提升来说是不同的。为什么在这种情况下它们相似?

最佳答案

Why are they similar in this case?

因为var被提升(但未设置),就像函数声明被提升一样,这意味着有一个 aa = 10; 之前的本地范围内被评估,所以全局 a永远不会被修改 - 标识符查找找到本地 a首先这样设置

<小时/>

其他问题的相关部分

var a = 1;

function b() {
a = 10;
return;

function a() {}
}
b();
alert(a);

Why is a === 1?

<小时/>

答案想说的是b等于

function b() {
function a() {}
a = 10;
return;
}

类似于

function b() {
var a = function () {};
a = 10;
return;
}

即有一个标识符a定义于 b ,所以

function b() {
var a = 10;
return;
}

现在,显然,全局 a不会被 b 修改

<小时/>

请注意 var 的位置并不重要,只是它在那里,下面的代码会产生相同的行为

function b() {
a = 10;
return;
var a;
}

关于javascript - 为什么 `var a= function(){}` 在以下情况下与 `function a(){}` 相似?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31712889/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com