在 JS 中,在为变量赋值之前声明变量名有什么好处?

In JS what is the benefit of declaring a variable name before assigning a value to it?

通常我会声明一个变量,其值如下:

var foo = "I am foo";

但是最近我看到了先声明变量名,然后再赋值的情况,像这样: var foo;

foo = "I am foo";

这样做有什么好处?

没有 "benefit" 特别是。但某些情况需要它,最明显的是条件声明:

var foo;

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

if..else 中两次使用 var 是错误的,或者至少是误导性的。如果您使用 let 而不是 var,它甚至会错误地限定变量。

只有当您不知道要为其分配什么值而不是重新分配值时,该好处才会发挥作用。例如

var foo;
if(someCond){
  foo = "this";
} else if(someOtherCond){
  foo = "that";
}