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...

  • 相关阅读:
    bzoj violet系列 (2708~2725)
    bzoj4692: Beautiful Spacing
    896.Montonic Array
    56. Merge Intervals
    767. Reorganize String
    872. Leaf-Similar Trees
    使用Spring MVC开发RESTful API(续)
    690. Employee Importance
    429. N-ary Tree Level Order Traversal
    使用Spring MVC开发RESTful API
  • 原文地址:https://www.cnblogs.com/10manongit/p/12838103.html
Copyright © 2011-2022 走看看