zoukankan      html  css  js  c++  java
  • 一道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:最后什么都不会输出
    

    看完题如果答对并且知道理由的小伙伴,仅当加深印象;如果你也像我一样不明所以,请仔细往下看。

    逗号表达式

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

    逗号表达式的要领:

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

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

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

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

    执行步骤如下表

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

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

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

  • 相关阅读:
    Delphi中的构造函数的override的问题
    一个很初级的错误 Destructor忘记override导致内存泄露
    WPF 详解模板
    再说WCF Data Contract KnownTypeAttribute
    ADO.NET Data Service
    Using ADO.NET Data Service
    资源:Localization – 本地化
    Dynamic Resource – 动态资源
    应用开发之Linq和EF
    语法之多线程
  • 原文地址:https://www.cnblogs.com/kenz520/p/8759269.html
Copyright © 2011-2022 走看看