zoukankan      html  css  js  c++  java
  • js中的bool值转换及"&&" 、"||"、 "!!"详解

    bool值转换

    数据类型 bool值转化
    undefined undefined 转化为 false
    Object null 转化为false,其他为 true
    Boolean false 转化为 false,true 转化为 true
    Number 0,NaN 转化为false,其他为 true
    String "" 转化为 false,其他为 true

    "&&" : 遇到“假”爱就返回

    javascript中“&&”运算符运算法则如下:

    返回遇到的第一个假值(null, undefined, NaN, false, '', 0)或者最后一个值。
    如果&&左侧表达式的值为真值,则返回右侧表达式的值;否则返回左侧表达式的值。多个&&表达式一起运算时,返回第一个表达式运算为false的值,如果所有表达式运算结果都为true,则返回最右侧一个表达式运算的值。
    const aa = {'name': 'xx'};
    const bb = aa && aa.age; // bb输出为undefined;
    let cc;
    const dd = cc && cc.name ? cc.name : undefined; // dd输出为undefined
    const dd = cc && cc.name; // dd输出为undefined;
    上面两句代码的执行结果是一样的,之前写代码的时候一直用上面的方式,但是发现有些单测覆盖不到,导致单测分支覆盖率很低,换下面的方式就可以很好的解决这个问题,这两句的效果是一样的。

    "||" :遇到“真”爱就返回

    javascript中"||"运算符的运算法则如下:

    返回遇到的第一个真值或者最后一个值。
    如果"||"左侧表达式的值为真值,则返回左侧表达式的值;否则返回右侧表达式的值。多个"||"表达式一起运算时,返回第一个表达式运算结果为true的值,如果所有表达式运算结果都为false,否则返回最右侧的表达式的值。
    const aa = false || 'xx'; // aa输出为'xx' 
    

    "!!"

    "!!"将表达式进行强制转化为bool值的运算,运算结果为true或者false。
    const aa = 'xx';
    const bb = !!aa; // bb输出为true
    const cc = !!(NaN || undefined || null || 0 || '' ); // cc为false;
    

    我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/dev...

  • 相关阅读:
    SQL Server XML数据解析
    c# XML和实体类之间相互转换(序列化和反序列化)
    C#解析XML详解(XPath以及带命名空间NameSpace)
    Jquery实现按钮点击遮罩加载,处理完后恢复
    jquery控制div随滚动条滚动效果
    asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)
    easyUI tree点击文字展开节点
    201805牛客模拟考
    策略模式
    非线程安全演变成线程安全---原子性与加锁机制
  • 原文地址:https://www.cnblogs.com/10manongit/p/12838103.html
Copyright © 2011-2022 走看看