美文网首页
逗号表达式

逗号表达式

作者: 就那ck | 来源:发表于2017-03-10 16:42 被阅读0次

初遇js逗号表达式

初次碰到逗号表达式,是在一次面试中的一道笔试题:

var i=0,j=0,k=0;
for(;i<6,j<10;i++,j++){
  k = i + j;
}
console.log(k);

一眼望去,就是个for循环啊,仔细一看,怎么有两个参数?有点蒙逼的感觉。。。
我想js可以单行声明变量,如下:

var i=0,j=0,k=0;

每个变量都能正常声明,说明逗号前后的表达式都可以执行,也互不影响。那这个for循环中的i++和j++应该也是也互不影响?但是for循环是由哪个变量来控制啊,是由i<6还是由j<10?
思来想去,最终也是没能给出正确答案。。。

什么是js逗号表达式?

面试结束后,赶紧去网上查资料,原来这种方式叫逗号表达式,它的特点是逗号前后的表达式都会执行,并且把最后一个逗号后的表达式的值返回给整个表达式。先来个简单的例子:

console.log((1,2,3));//3

结果可以看到打印的是3,也就是说表达式(1,2,3)返回的是最后一个逗号后面的值。
再来一个稍微复杂点的例子:

console.log((b=4,c=10+b,b*5));//20
console.log(c);//14

这个例子第一个会打印出20,这是因为返回了b*5,而b=4,所以会打印出20,第二个会打印出14,表示逗号表达式的每个被逗号隔开的表达式都会执行,而c=10+b,所以打印结果是14。

for循环最终打印出多少?

再回到刚才那个for循环,i<6,j<10这也是一个逗号表达式,for循环的循环条件取决于这个逗号表达式所返回的值,而根据之前所说,会返回最后一个逗号后的表达式的值作为整个逗号表达式的值。因此,当j<10的时候,会返回true,for循环会一直进行下去,当j>=10,会返回fasle,整个for循环会结束。

后面的i++,j++,也是一个逗号表达式,每次循环i和j都会分别执行,自加1。直到j=10的时候,for循环停止,此时内部的i和j都自加到了9,因此k=9+9;结果会打印出18。

如果改变一下for循环条件位置,如下:

var i=0,j=0,k=0;
for(;j<10,i<6;i++,j++){
  k = i + j;
}
console.log(k);

这样会打印出多少呢?

相关文章

  • C语言学习 - 逗号运算符

    在C语言中,逗号运算符的功能是把多个表达式连接起来组成一个表达式,称为逗号表达式。逗号表达式在使用gcc编译时,带...

  • 那些年C语言走过的坑

    一、逗号运算符 在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一...

  • 逗号表达式

    1. 逗号表达式的一般形式 PS: 逗号运算符优先级最低 逗号运算符的结合性从左至右 逗号表达式的值等于最后一个表...

  • 逗号表达式

    逗号运算符特性: 1.逗号运算符将两个以上的表达式用逗号联起来,2.计算过程为从左到右;3.整个逗号表达式会有一个...

  • C扩展:运算符与变量

    1. 逗号表达式 逗号用来连接两个表达式,并以右边的表达式的值为结果。 优先级:所有运算符中最低的 结合律:只左向...

  • C语言005 第五节课-逗号运算符2019-06-28

    前言:逗号运算符,逗号运算符是单目运算符,其功能是把两个表达式组成一个表达式,分别求表达式的值,最后一个表达式的值...

  • 3.5.1 花括号展开(Brace Expansion)

    助记定义 逗号分割序列:由逗号分隔的任意字符序列,其中至少包含一个非quoted逗号。序列表达式:“x..y”或“...

  • Javascript - 逗号和三目运算符

    在JavaScript中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把多个表达式连接起来组成一个表达式, ...

  • 逗号表达式

    初遇js逗号表达式 初次碰到逗号表达式,是在一次面试中的一道笔试题: 一眼望去,就是个for循环啊,仔细一看,怎么...

  • JavaScript 逗号表达式笔记

    #JavaScript 逗号表达式笔记 ##逗号操作符是多元操作符,可以在一条语句中执行多个操作 1.逗号操作符可...

网友评论

      本文标题:逗号表达式

      本文链接:https://www.haomeiwen.com/subject/qrzngttx.html