gpt4 book ai didi

javascript - 在 if 语句 block 中使用 let 定义尚 undefined variable 的替代方法是什么?

转载 作者:行者123 更新时间:2023-12-01 10:17:44 24 4
gpt4 key购买 nike

在调用具有特定名称的函数之前,我想声明它(使用后备定义),如果它尚不存在:

if (typeof myFunction === 'undefined') {

let myFunction = () => console.log('Warning: myFunction() has not been defined.');
}

myFunction();

但是,当然let 具有 block 作用域,因此尽管在 if 语句中给 myFunction() 一个后备定义myFunction() 在 if 语句 block 之外保持未定义。


最简单的解决方案是使用 var (它没有 block 作用域)而不是 let:

var myFunction = () => console.log('Warning: myFunction() has not been defined.');

这是推荐的方法吗?或者我错过了一些更传统的东西?


NB. 我怎么不知道这个特定函数是否已定义(或者使用 letconst var)?

因为我正在对用户生成的脚本进行后处理,该脚本可能包含也可能不包含该函数定义,并且需要:

  • 提供后备方案(如果尚未定义);或
  • 如果是的话,什么也不做

最佳答案

我想说,在这种非常非常具体的情况下,使用 var 的方法是最好的选择:

if (typeof myFunction === 'undefined') {

var myFunction = () => console.log('Warning: myFunction() has not been defined.');
}

myFunction();

这又是一种非常具体的情况,并且可能是剩下的极少数有效的 var 用例之一(可能唯一)。当您不知道是否或如何在作用域中声明绑定(bind)(松散的变量)时,没有可靠的方法可以使用 let (或 const 等)它已经被定义了。

唯一的其他半可行的解决方案是直接分配给它,但这将特定于全局范围,并且在严格模式下会失败。

var 我想这就是答案。

关于javascript - 在 if 语句 block 中使用 let 定义尚 undefined variable 的替代方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59630106/

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