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中的判断表示式使用逗号分隔时,遵循逗号运算符的基本规则,最终结果由最右的操作数决定

  • 相关阅读:
    window上安装zabbix agent使用案例
    zabbix通过shell脚本安装异常问题定位
    linux脚本实现scp命令自动输入密码和yes/no等确认信息
    需求:lr需要在一串数字中随机位置插入一个新数字的实现方式
    python写csv文件
    python产生随机名字
    python生成随机日期字符串
    centos6.5上安装redis3.2.1遇见的坑
    python辅助sql手工注入猜解数据库案例分析
    XXE (XML External Entity Injection) 外部实体注入漏洞案例分析
  • 原文地址:https://www.cnblogs.com/sefaultment/p/9448136.html
Copyright © 2011-2022 走看看