逗号在JavaScript中的赋值语句中做了什么?

cap*_*gon 10 javascript

我在一段代码中找到了这个,我想知道它是做什么的?将b分配给x ...但是有什么用,c

var x = b, c;
Run Code Online (Sandbox Code Playgroud)

bfa*_*tto 15

声明两个变量,xc,和值赋给b变量x.

这相当于更明确的形式*:

var x = b;
var c;
Run Code Online (Sandbox Code Playgroud)

JavaScript允许每个var关键字多个声明- 每个新变量用逗号分隔.这是JSLint建议的样式,它指示开发人员使用单个var per函数(来自JSLint的错误消息Combine this with the previous 'var' statement.).

*实际上,由于提升它将被解释为var x; var c; x = b.

  • 运算符存在于表达式级别,而不是语句级别.`var a =(1,2)`将使用逗号运算符,因为`(1,2)`是一个表达式.`var a = 1,b = 2`中的逗号不是表达式的一部分.https://developer.mozilla.org/en/JavaScript/Reference/Statements/var (6认同)
  • 那肯定不是逗号运算符吗?这是多个变量的声明. (4认同)
  • 在for循环中常见类似的语法:`for(var i = 0,l = array.length; i <l; i ++){}` (3认同)
  • 在`var`声明的上下文中,逗号只是变量初始化列表之间的分隔符.它不是逗号运算符; 即使它是,也没关系,因为`var`语句无论如何都没有"价值". (3认同)

xan*_*ded 5

这定义了两个局部变量xc-在设置x的值相等的值b.


Ted*_*ddy 5

cundefined.

这相当于:

var x = b;
var c;
Run Code Online (Sandbox Code Playgroud)