Javascript 如何在一行上定义多个变量?

IT技术 javascript
2021-03-04 00:59:39

在线阅读文档时,我对如何在一行中正确定义多个 JavaScript 变量感到困惑。

如果我想压缩以下代码,在一行中定义多个 javascript 变量的正确 JavaScript“严格”方法是什么?

var a = 0;
var b = 0;

是吗:

var a = b = 0;

或者

var a = var b = 0; 

等等...

6个回答

使用 Javascript 的 es6 或 node,您可以执行以下操作:

var [a,b,c,d] = [0,1,2,3]

如果您想在一行中轻松打印多个变量,只需执行以下操作:

console.log(a, b, c, d)

0 1 2 3

这类似于 @alex gray 在此处的回答,但此示例使用 Javascript 而不是 CoffeeScript。

请注意,这使用了 Javascript 的数组解构赋值

为什么不在console.log(a,b,c,d)这种情况下使用呢?它更短并提供相同的输出
2021-05-12 00:59:39

你想依赖逗号,因为如果你依赖多重赋值结构,你会在某一点或另一点踢自己的脚。

一个例子是:

>>> var a = b = c = [];
>>> c.push(1)
[1]
>>> a
[1]

它们都引用内存中的同一个对象,它们不是“唯一的”,因为无论何时你引用一个对象(数组、对象文字、函数),它都是通过引用而不是值传递的。因此,如果您只更改其中一个变量,并希望它们单独运行,您将无法获得想要的结果,因为它们不是单独的对象。

多重赋值还有一个缺点,即次要变量变成了全局变量,而您不想泄漏到全局命名空间中。

(function() {  var a = global = 5 })();
alert(window.global) // 5

最好只使用逗号,最好使用大量空格,以便可读:

var a = 5
  , b = 2
  , c = 3
  , d = {}
  , e = [];
这种多重赋值模式需要记住的是,在 ES5 严格模式下,任何未声明的赋值都会导致ReferenceError异常...... IMO,应该避免它们......
2021-04-17 00:59:39
“因此,虽然您可以对数字文字等多个右手赋值”
2021-04-19 00:59:39
@meder,这是任何作业的问题。右手没什么特别的。
2021-05-08 00:59:39
这确实是分配数组引用的一般问题,而不仅仅是将赋值语句作为值。
2021-05-14 00:59:39
我的意思是一般的任务。编辑的措辞。
2021-05-14 00:59:39

没有办法在一行中将赋值作为值来完成。

var a = b = 0;

使 b 全球化。正确的方法(没有泄漏变量)是稍长的:

var a = 0, b = a;

这在以下情况下很有用:

var a = <someLargeExpressionHere>, b = a, c = a, d = a;
“没有办法在不重复 0 的情况下使用赋值作为值。” - 你是什么意思?
2021-05-14 00:59:39

为什么不分两行做呢?

var a, b, c, d;    // All in the same scope
a = b = c = d = 1; // Set value to all.

原因是为了保留变量声明的局部范围,如下所示:

var a = b = c = d = 1;

将导致b,cd在窗口范围内的隐式声明

这对我很有用,因为我在程序中预先声明了许多变量。现在,我可以在不牺牲可读性的情况下使用几行,而不是使用 30 多行。
2021-04-28 00:59:39

这是在一行中声明多个变量的新 ES6 方法:

const person = { name: 'Prince', age: 22, id: 1 };

let {name, age, id} = person;

console.log(name);
console.log(age);
console.log(id);

*你的变量名和对象索引必须相同

这比 OP 的问题要长,因为它相当于let { a, b } = { a: 0, b: 0 }.
2021-04-26 00:59:39