JavaScript中一行代码如何同时赋值多个变量?

6

我在查看@robbmj对这个问题的回答时,发现了以下代码:

var timer = duration, minutes, seconds;

还有一个在这里:

var start = Date.now(),
    diff,
    minutes,
    seconds;

我以前从未接触过这段代码,请问有人可以解释一下这两行代码的作用,或者至少告诉我如何阅读它们吗?


变量计时器等于持续时间, 分钟等于x, 秒等于y; 分钟和秒被声明但没有任何初始值。 - Asons
这些只是声明。diffminutesseconds仍将是undefined。这可以帮助使var声明更加明显,因为您将不得不担心提升。 - zero298
第一个设置一个变量计时器=持续时间,然后是两个空的/未定义的变量 - 分钟和秒。第二个将开始设置为当前日期,然后在作用域中设置三个空的/未定义变量。基本上,如果您在变量声明后跟逗号,则意味着您可以直接进入在该作用域中声明另一个变量,而无需再次使用“var”:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var - Pete
就是这段代码:var timer = duration; var minutes; var seconds;稍微压缩一下,timer 被设置成 durationminutesseconds 未定义。第二个例子同样适用,其中 start 被定义为 Date.now() 的值,其他变量被“初始化”。 - Luca Kiebel
一个很好的参考资料是逗号运算符的文档。不过需要注意的是,这种风格在任何构建工具自动缩小可交付代码之前就已经流行了。实际上,它被用作手动缩小代码的一种方式(无需为每个声明编写额外的var x;)。 - Jason Cust
这么简单啊!!谢谢LGSon,zero298,pete,luca :)) - user9657909
4个回答

5
您也可以这样使用解构:

示例:

let [a, b, c] = [0, 0, 0]

3
你可以编写代码。
var start = Date.now(),
diff,
minutes,
seconds;

as

var start = Date.now();
var diff;
var minutes;
var seconds;

在代码片段1中,您可以像初始化start变量一样,一次声明多个变量。

您可以在同一行中初始化多个变量,例如:

var a = 1, b = 2, c = 3;

@jes 欢迎 :) - Zohaib Ijaz
例如:timer = 1; 所以 --timer < 0 将会是 false--timer 会先将 timer 减一,然后再进行比较,而 timer-- < 0 则会先进行比较,然后再减一。 - Zohaib Ijaz
是的,我刚刚在这里阅读了https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus_(.2B),再次非常感谢您:)) - user9657909

0
第一行创建了三个变量:timerminutesseconds。但是将变量duration的值赋给了变量timer。
在示例2中,同样的故事,只是用换行符分隔开来。
这是一种缩短的说法。
var timer = duration;
var minutes;
var seconds;

var a = 0 不等同于 var a; - Luca Kiebel
是的,没错,抱歉。 - J-Cake
谢谢@JacobSchneider :) - user9657909
没问题。很高兴能帮忙。 - J-Cake

0

你的第二个例子只是用换行符分隔。

在单行上定义多个变量很烦人,因为要删除第一个或最后一个声明,因为它们包含var关键字和分号。每次添加新的声明时,都必须将旧行中的分号更改为逗号。

因此,不建议在单行上定义多个变量

使用它

var timer = duration;
var minutes = 0;
var seconds = 0;

而不是

var timer = duration, minutes, seconds;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接