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

How to use if statement to declare a new variable with ES6? JavaScript

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

if (variableNotMade) {
  var makeVariable
}

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

let makeVariable = variableNotMade ? foo : bar

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

如果你不想要 else 块,你可以这样做

let makeVariable = variableNotMade && foo

但这会将 makeVariable 设置为 false。 所以,如果这不是您特别想要的,您应该使用 deceze♦ 方法。

在我看来,不存在 可选声明 这样的东西。你声明变量然后赋值可以是可选的,如果你可以调用它(最好说是有条件的)。最后检查是否为空。

此外 let constvar 是不同的东西: let 有一个块作用域,const 是只读的块作用域,最后 var 有一个函数作用域。安全地使用它们涉及更多内容,因为嘿,它是 JS,但这就是摘要。

你不应该"conditionally create variables"。您可以有条件地为变量赋值,但不能有条件地创建它。

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

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

alert(bar);

那么如果 foofalse,那么 bar 不会被创建,然后 alert(bar) 会引发关于未定义变量的错误?!不,这太疯狂了。

这就是为什么 var 声明将被提升并且变量 存在,仅具有 undefined 值。这就是为什么 letconst 是显式块作用域的原因;他们存在于他们的街区内,他们不会存在于他们的街区外。所以你永远不会陷入 "conditionally created variable" 不存在的情况。

你想要的大概是:

let foo;

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