如果我们在JavaScript中使用逗号,是否保证哪个变量将首先初始化?
如果我们在JavaScript中使用逗号,是否保证哪个变量将首先初始化 例如,如果我有以下代码:如果我们在JavaScript中使用逗号,是否保证哪个变量将首先初始化?,javascript,initialization,sequence,var,comma,Javascript,Initialization,Sequence,Var,Comma,如果我们在JavaScript中使用逗号,是否保证哪个变量将首先初始化 例如,如果我有以下代码: var a = function() {return 2;} , b = a(); 是否保证a的初始化将先于b的初始化 我知道更好的做法是每次初始化变量时使用var关键字。但我仍然对我的问题的答案感兴趣,因为我无法在互联网上找到JavaScript的答案 正如前面所指出的,我们可以证明JavaScript中的逗号运算符和列表初始化是两件不同的事情 b = 2, a = 2; console.log
var a = function() {return 2;} , b = a();
是否保证a
的初始化将先于b
的初始化
我知道更好的做法是每次初始化变量时使用var
关键字。但我仍然对我的问题的答案感兴趣,因为我无法在互联网上找到JavaScript的答案
正如前面所指出的,我们可以证明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,谢谢。你的评论似乎和我想要的非常接近。我将更新我的问题,以指定我不清楚的部分。我相信如果你仔细研究规范()(我没有仔细研究过规范),你会发现你看到的行为(从左到右的评估)被编码在规范中。我不认为初始化列表中的逗号是逗号运算符。嗯。。。请您键入一个初始化变量的表达式示例,好吗?因为据我所知,表达式(在逗号后面)b=a()
不是初始化,而是在window
对象上创建的属性。我不确定,但这个剪接似乎有效:让a=5,b=a+5;控制台日志(b);//10
@Saraband,它可能工作几次甚至几百万次,但在文档保证之前,依赖它是不安全的。我会投票给你答案。谢谢。(function(){var a=1,b=2;})();控制台日志(window.a,window.b)代码>b
不是窗口的属性。这确实是一个局部变量初始化。