zoukankan      html  css  js  c++  java
  • js中的逗号运算符

    逗号运算符

    逗号运算符是二元运算符,它的操作数可以是任意类型。它首先计算左操作数,然后计算右操作数,最后返回右操作数的值,用逗号运算符可以在一条语句中执行多个运算

    作用:

    1.在一条语句中从左到右执行多个运算

    2.返回右边最后一个值作为表达式的结果(经常被忽略但是却很重要的特性)

    (i = 0), (j = 1), (k = 2);
    //计算结果是2,它和下面的代码基本等价
    i = 0;
    j = 1;
    k = 2;
    console.log(((i = 1), (j = 2), (k = 3))); //计算结果为2
    

    应用场景:

    1.同时声明多个变量

    var iNum1 = 1,
        iNum = 2,
        iNum3 = 3;
    

    2.for 循环中三部分有多个变量时,使用,分割

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

    来一道醍醐灌顶的面试题:

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

    结果推测:

    1. k=10
      解析:
      因为 i=6 时,不满足条件,跳出循环。(关系间为&&关系)
    2. k=12
      基础原因考虑到 1,然后推测 k=i+j 是引用函数中的 i、j 所以当 log(k)的时候,应该输出 i、j 循坏结束后的值即 i=j=6(闭包后遗症)
    3. k=18
      因为 i < 6, j < 10 是或的关系,需要两者同时值为 false
    4. k=18
      逗号运算符从左到右依次计算每个操作符,最终结果由最右的操作数决定,j<10 才为中止条件。

    输出答案:

    console.log(k); //k=18
    

    3、4 推测验证:

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

    验证分析:

    1.逗号分隔的是或的关系,那么需要所有表达式都为false,结果依然为18
    
    2.逗号分隔为运算符,那么条件判断最终结果为最右表达式2<1,那么将不进入循环,直接输出undefiend
    

    验证结果:

    console.log(k);//k=undefined
    

    结果分析,最终输出k=undefined,for中的判断表示式使用逗号分隔时,遵循逗号运算符的基本规则,最终结果由最右的操作数决定

  • 相关阅读:
    HDU2602:Bone Collector
    HDU5773:The All-purpose Zero
    LightOJ 1275:Internet Service Providers
    8.SpringMVC拦截器
    7.SpringMVC和Ajax技术
    Tomcat什么时候需要restart,redeploy,update classes and resources
    6.SpringMVC的JSON讲解
    5.SpringMVC数据处理
    4.SpringMVC的结果跳转方式
    3.SpringMVC的Controller 及 RestFul风格
  • 原文地址:https://www.cnblogs.com/sefaultment/p/9448136.html
Copyright © 2011-2022 走看看