gpt4 book ai didi

javascript - 当我们定义一个从未使用过的函数时,可能会有什么缺点?

转载 作者:行者123 更新时间:2023-11-28 18:40:20 25 4
gpt4 key购买 nike

我正在学习JavaScript,昨天我觉得我应该复习一些基础知识,所以我选择了“函数”主题。当我从 Mozilla 读到这篇文档时,我看到了这个:

Note: Some JavaScript engines, not including SpiderMonkey, incorrectly treat any function expression with a name as a function definition. This would lead to zero being defined, even with the always-false if condition. A safer way to define functions conditionally is to define the function anonymously and assign it to a variable:

if (0) {
var zero = function() {
document.writeln("This is zero.");
}
}

所以我的问题是,因为它说更安全的方式,这意味着这种方式不安全:可能是什么问题?

谢谢。

最佳答案

当您使用 var 声明变量时,它是 hoisted到范围的顶部。因此,您可以编写如下代码:

if (someCondition) {
var zero = function zero() {
// do stuff
};
}
if (zero) {
zero();
}

正确执行时,如果 someConditionfalsezero 将始终为 undefined

如果引擎错误地使用命名函数表达式作为函数定义,那么它也会被提升,这意味着zero将是someCondition之前的函数甚至被检查。这意味着无论someCondition是什么,都将具有“真实”值。

基本上,任何时候你希望一个值是未定义的,因为你实际上没有给它分配一个命名函数,它实际上会被分配给一个函数,假设你将该函数命名为相同的函数东西作为你的变量。

关于javascript - 当我们定义一个从未使用过的函数时,可能会有什么缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36207184/

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