当心JavaScript奇葩的逗号表达式
Posted lwming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当心JavaScript奇葩的逗号表达式相关的知识,希望对你有一定的参考价值。
看看下面的代码输出什么?
let a = 2; switch (a) case (3, 2, 5): console.log(1); break case (2, 3, 4): console.log(2); break case (3, 2): console.log(3); break default: console.log(4); break;
输出为: 3
解析:“逗号操作符 对它的每个操作数求值(从左到右),并返回最后一个操作数的值。”
上面代码中第一个 case 的返回值为5,第二个为4 , 与 变量a的值都不相等,第三个为2,与a相等,所以最后输出 3 。
再看一例子:
let i, j; let result = 0; for (i = 0, j = 0; i < 3, j < 7; i++, j++) result = i + j console.log(result)
输出为:12
解析:根据逗号操作符对它的每个操作数求值(从左到右),并返回最后一个操作数的值的特性可知逗号表达式 “i<3,j<7”,其实质上等于“j<7”,所以结果是 12
以上是关于当心JavaScript奇葩的逗号表达式的主要内容,如果未能解决你的问题,请参考以下文章
可以将逗号分隔的表达式用作 Javascript 中的 if 语句吗?
Javascript split() 正则表达式在 Chrome 中返回不需要的逗号