Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我们在JavaScript中使用逗号,是否保证哪个变量将首先初始化?_Javascript_Initialization_Sequence_Var_Comma - Fatal编程技术网

如果我们在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

如果我们在JavaScript中使用逗号,是否保证哪个变量将首先初始化

例如,如果我有以下代码:

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
不是
窗口的属性。这确实是一个局部变量初始化。