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

  • 相关阅读:
    LeetCode105. 从前序与中序遍历序列构造二叉树
    Flask 基础
    24个常用 Python 实现
    大佬的编码建议,让你的代码更pythonic
    rest-framework框架之序列化
    路飞学城项目之加入结算中心接口
    java异常与spring事务关系的知识点查漏补缺
    iserver-数据库型数据源导入后原dataset名称和数据库表名不一致的问题
    解决数据读取的负载均衡的问题
    Nginx反向代理、CORS、JSONP等跨域请求解决方法总结
  • 原文地址:https://www.cnblogs.com/10manongit/p/12838103.html
Copyright © 2011-2022 走看看