• js短路表达式


    今天碰见个题目,感觉短路表达式很好用。

    题目:

    复制代码
    定义一个计算圆面积的函数area_of_circle(),它有两个参数:
    
      r: 表示圆的半径;
      pi: 表示π的值,如果不传,则默认3.14
    
      function area_of_circle(r, pi) {
    
       }
    复制代码

    我的写法: 

    复制代码
    if(arguments.length>=2)
    {
    return pi*r*r;
    }
    else if(arguments.length==1)
    {
    return 3.14*r*r;
    }
    else return false;
    复制代码

    别人写法:

    return r*r*( arguments.length >= 2 ? pi : 3.14 );

    大神写法:

    return r * r * (pi || 3.14);

    短路表达式知识补充:

    1、逻辑与 && 的运算方式

    var a = 1 && 2;
    
    console.log(a); //返回的结果为 2

    如果逻辑与运算符左边的值布尔转换后为true,那么返回右边的值(不管右边的值是真还是假)。

    var a = false && 2;
    
    console.log(a); //返回的结果为 false

    如果逻辑与运算符左边的值布尔转换后为false,那么返回左边的值,但是当逻辑与的左边为 null/NaN/undefined ,结果就会得到null/NaN/undefined。

    2、逻辑或 || 的运算方式

    如果逻辑或运算符左边的值布尔转换后为false,那么返回右边的值(不管右边的值是真还是假)。

    如果逻辑或运算符左边的值布尔转换后为true,那么返回左边的值,如果两个操作数都是是null(NaN/undefined),返回null(NaN/undefined)

    复制代码
    var a = false || 2;
    
    console.log(a); //返回的结果为2
    
    var a = true || 2;
    
    console.log(a); //返回的结果为 true
    复制代码

     3.短路表达式实际应用补充(2018-8-14)

    (1)正则表达式
    v => !v || /^([0-9]{7,18})|(0?(13|14|15|17|18|19)[0-9]{9})$/.test(v) || '格式错误',
    前边为true则不再执行后边的,前边为false则继续往后执行。
     
    (2)if的简化
    复制代码
    vm.querySelObj[key] && (params[key] = vm.querySelObj[key]);

    相当于 a&&(b=1);

     a等于true则执行b=1,a=false则不执行b=1.用if写:if(a=true){b=1}
     
    复制代码
     
  • 相关阅读:
    CentOS 上配置 lua 的服务器环境(enet)
    报错解决 unable to unroll loop, loop does not appear to terminate in a timely manner (994 iterations) or unrolled loop is too large, use the [unroll(n)] attribute to force an exact higher number
    开源许可证的选择
    Lua 协程
    [命令模式]在游戏开发中的应用
    NGUI 源码分析- AnchorPoint
    NGUI 源码分析- UIWidgetInspector
    Java程序员需要学习的知识点
    Linux下安装Perl和Perl的DBI模块
    Linux安装JDK
  • 原文地址:https://www.cnblogs.com/ckAng/p/10490162.html
Copyright © 2020-2023  润新知