如何在单个声明中将多个局部变量设置为相同的值?

vol*_*ron 10 javascript

考虑以下:

(function(){
   var foo = bar = 1;
}());
Run Code Online (Sandbox Code Playgroud)
  • foo将是函数的局部变量
  • bar将是窗口的全局变量

由于它们的作用域,两个变量在函数内部的值都为1,但是bar将保留在函数外部(在全局范围内).

我很好奇是否有办法使用赋值运算符初始化变量,没有循环或对象.我正在寻找一个关键字或前缀,这将使bar成为本地范围.这个想法是干燥和有效的.


编辑:上面的例子很简单.使用10个变量的一个选项可能是在初始化之前将变量预先声明到本地范围:

var foo, bar, baz, foobar, foobaz, bazfoo, barbaz,
    bazbar = foo = bar = baz = foobar = foobaz = barbaz = true;
Run Code Online (Sandbox Code Playgroud)

但是,这样做既重复又难以阅读.一个人可以使用数组或对象,但这不太清晰,更混乱.

背景是另一个开发人员正在var foo = bar = true一个函数内部,我指出只是设置一个局部变量.他们没有意识到这一点,并且想要改变并询问是否可以内联和设置多个局部变量,而不是多次键入每个变量(而不是重构代码/数组或对象).

在最初问这个问题时,我接触过ES6,但尚未完全阅读文档.我的想法是ES6有一些很好的功能(例如,休息,解构赋值),所以它也可能提供了一种方法来将大块变量大量初始化为相同的范围和值.

Ori*_*iol 8

您不能(或不应该)为未声明的变量赋值.

然后,当您想要使用相同的值声明多个变量时,您可以

  • 我不记得`.fill(...)` - 这是一个聪明的人. (2认同)