javascript - ES6如何使用if语句声明一个新变量? JavaScript

标签 javascript if-statement ecmascript-6 constants let

如何有选择地使用 letconst 声明变量? 例如,可以这样做:

if (variableNotMade) {
  var makeVariable
}

但是如何使用 letconst 而不是 var 来实现这一点呢?
类似的帖子here表明可以这样做:

let makeVariable = variableNotMade ? foo : bar

尽管这种方法只有在您有 else 时才真正有效。
是否有合适的方法来实现这一目标,或者应该采取不同的方法?

最佳答案

您不应该“有条件地创建变量”。您可以有条件地为变量赋值,但不能有条件地创建变量。

以这个例子为例,假设它会按您的预期工作:

if (foo) {
    var bar = 'baz';
}

alert(bar);

如果 foofalse,那么 bar 没有被创建,那么 alert(bar) 又怎么样呢? > 会引发有关 undefined variable 的错误?!不,这太疯狂了。

这就是为什么 var 声明将被提升并且变量存在,只是带有一个未定义值。这就是为什么 letconst 是显式 block 作用域的;它们存在于其 block 内,并且它们不会存在于其 block 外。因此,您永远不会遇到“条件创建的变量”不存在的情况。

你想要的可能是:

let foo;

if (bar) {
    foo = 'baz';
}

关于javascript - ES6如何使用if语句声明一个新变量? JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50567158/

相关文章:

javascript - 将文本区域拆分为数组

ios - 单元格中有多个按钮,可将选定的按钮设置为单元格数据

php - `if` 发现条件为假时不执行其他函数的语句

javascript - typescript |套接字IO : How to refer to the client object

javascript - 如何从另一个调用 ES6 类中的一个方法?

javascript - 需要帮助来反转一串单词

Javascript 异步缓冲区复制

javascript - 用双引号复合替换 float

javascript - jQuery 通过 POST 不使用表单将变量传递到新页面

python - 如何从文件夹内的 n 个 csv 文件导入数据?