【问题标题】:Define the function if it's not being defined如果未定义函数,请定义函数
【发布时间】:2021-10-16 08:58:15
【问题描述】:
if (typeof test1 !== "function") {
    const test1 = () => {
        return true
    }
}

我正在尝试在浏览器中评估 javascript 而不重复定义函数。但是上面的代码没有定义函数,有什么问题吗?

【问题讨论】:

  • const 是块作用域——所以这不起作用——当然除了在 if 块内
  • @Bravo 我明白了,问题是我每次都需要评估相同的javascript代码,所以如果我在没有任何条件的情况下定义函数,它与每次重新定义它不一样吗?
  • 是的,我不知道,我只是告诉你为什么你的代码不能正常工作,正如你所问的 - 没有意识到你想让它工作

标签: javascript function ecmascript-6


【解决方案1】:

不要在if 内声明test1,这将创建一个块范围的变量。而是在 if 块内分配 test1 的值。

如果您在 if 条件中声明 test1,JavaScript 会创建一个块范围的变量。

// let test1 = 200; // Do only if you want to run the code single time
if (typeof test1 !== "function") {
    test1 = () => { 
        return true
    }
}
console.log(test1());

【讨论】:

  • 当然,如果test1 甚至不是declared 这将产生一个global 函数
  • 但这在 if 语句之外是不可访问的,因为该变量的范围只存在于 if 中。可能的解决方案是在全局范围内声明变量,在 if 内部更新变量并在外部使用它。
  • if 条件之外的 test1 变量是否会重新定义自身,如果它之前已被定义?
  • @skygate 是的,它会的。如果条件满足。我已经更新了我的例子。最初它是一个数字,我已将其更新为一个函数。
  • @Nitheesh 如果之前已定义,是否可以不定义?
猜你喜欢
  • 1970-01-01
  • 2014-10-01
  • 2014-06-19
  • 1970-01-01
  • 2018-12-20
  • 2021-11-06
  • 1970-01-01
  • 2023-02-05
  • 2017-01-11
相关资源
最近更新 更多