一道JS面试题引起的血案

逗号表达式

刚入职新公司,属于公司萌新一枚,一天下午对着屏幕看代码架构时。
BI项目组长给我看了一道面试别人的JS面试题。面试

虽然答对了,但把理由说错了,照样不及格。架构

话很少说,直接上题:学习

var a = 1;
switch (a) {
    case 2:
        console.log(2)
    break;
    case 1, 2, 3:  // 这里case是对比几呢?
        console.log(1)
    break;
    default: 
    break;
}
// result:最后什么都不会输出

看完题若是答对而且知道理由的小伙伴,仅当加深印象;若是你也像我同样不明因此,请仔细往下看。code

逗号表达式

表达式1,表达式2,表达式3,...... ,表达式n

逗号表达式的要领:

  1. 逗号表达式的运算过程为:从左往右逐个计算表达式
  2. 逗号表达式做为一个总体,它的值为最后一个表达式(也即表达式n)的值
  3. 逗号运算符的优先级别在全部运算符中最低

有了上述的概念,再回过头来看面试题就很清晰了。blog

打铁趁热,再来一道题来加深下理解。it

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

// result:10

执行步骤以下表console

i j k
0 0 0
1 1 2
2 2 4
3 3 6
4 4 8
5 5 10

一直埋头写代码,没用到的知识老是容易忘记,恰好碰到,索性作下笔记加深印象,努力学习知识,仅为装X。table

做者:以乐之名
本文原创,有不当的地方欢迎指出。转载请指明出处。class

相关文章
相关标签/搜索