gpt4 book ai didi

javascript - 立即调用函数表达式

转载 作者:行者123 更新时间:2023-11-30 10:04:58 24 4
gpt4 key购买 nike

这两个函数到底有什么不同?

var f2 = function () {
console.log(f2); // undefined --> how and why ?
}();

&

var f1 = function () {
console.log(f1); // f1 function object
};
f1();

为什么第一个记录 undefined ?我期待与第二个相同的结果,然后我被撞下椅子并记录了 undefined

最佳答案

在第一种情况下,赋值给f2还没有发生。在赋值表达式中,首先计算右侧的表达式,然后将结果赋值给左侧的表达式。到那时该变量将具有默认值 undefined仅。

在你的情况下应用它,只有执行函数对象的结果

function() {
console.log(f2);
}

将分配给f2 .但是你正在访问 f2在匿名函数对象中。所以,默认值 undefined被返回,因为没有任何东西被分配给f2然而

你可以这样确认

var f2 = function () {
return 1;
}();

console.log(f2);
// 1

这里,函数对象被执行,结果赋值给f2 .在分配发生之前,f2 的值将是 undefined仅。


注意:

在第一种情况下,即使在赋值之后,如果你做 console.log(f2) ,它会记录 undefined仅有的。因为,您没有明确地从函数对象返回任何东西。所以,默认值 undefined将返回并存储在 f2 中.


在第二种情况下,函数对象被分配给f1这就是为什么您可以像函数一样调用它 ( f1() )。所以,当你登录 f1f1 内本身,它会打印函数对象。

关于javascript - 立即调用函数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29647467/

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