【发布时间】:2019-03-15 08:41:29
【问题描述】:
如果我们在 JavaScript 中使用逗号,是否保证首先初始化哪个变量?
例如,如果我有以下代码:
var a = function() {return 2;} , b = a();
是否保证a的初始化会先于b的初始化?
我知道更好的做法是每次初始化变量时都使用var 关键字。但我仍然对我的问题的答案感兴趣,因为我无法在互联网上找到 JavaScript 的答案。
正如Trevor Dixon 所指出的,我们可以证明 JavaScript 中的逗号运算符和列表初始化是两个不同的东西。
b = 2, a = 2; console.log(window.a, window.b); //outputs 2 2
var b = 2, a = 2; console.log(window.a, window.b); //outputs undefined undefined
谢谢。
【问题讨论】:
-
@Saraband,谢谢。您的评论似乎与我正在寻找的内容非常接近。我将更新我的问题以指定我不清楚的部分。
-
我相信,如果你足够仔细地研究规范 (ecma-international.org/ecma-262/9.0/…)(我还没有做过——很难阅读规范),你会发现你看到的行为(从左到 -正确的评估)被编入规范中。
标签: javascript initialization sequence var comma