如何有选择地使用 let
或 const
声明变量?
例如,可以这样做:
if (variableNotMade) {
var makeVariable
}
但是如何使用 let
或 const
而不是 var
来实现这一点呢?
类似的帖子here表明可以这样做:
let makeVariable = variableNotMade ? foo : bar
尽管这种方法只有在您有 else
时才真正有效。
是否有合适的方法来实现这一目标,或者应该采取不同的方法?
最佳答案
您不应该“有条件地创建变量”。您可以有条件地为变量赋值,但不能有条件地创建变量。
以这个例子为例,假设它会按您的预期工作:
if (foo) {
var bar = 'baz';
}
alert(bar);
如果 foo
为 false
,那么 bar
没有被创建,那么 alert(bar)
又怎么样呢? > 会引发有关 undefined variable 的错误?!不,这太疯狂了。
这就是为什么 var
声明将被提升并且变量将存在,只是带有一个未定义
值。这就是为什么 let
和 const
是显式 block 作用域的;它们将存在于其 block 内,并且它们不会存在于其 block 外。因此,您永远不会遇到“条件创建的变量”不存在的情况。
你想要的可能是:
let foo;
if (bar) {
foo = 'baz';
}
关于javascript - ES6如何使用if语句声明一个新变量? JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50567158/