• JavaScript中的空数组和空对象布尔值是true还是false?


    1.空数组和空对象都是Object类型

    console.log(typeof []);  //object
    console.log(typeof {}); // object
    
    • 1
    • 2

    2.空数组和空对象转化为Number不一样

    对象转化为Number都是NaN,数组视情况而定

    console.log(Number([]));  0
    console.log(Number([1]));  1
    console.log(Number([1,2]));  NaN
    console.log(Number(['嗷嗷嗷']));  NaN
    console.log(Number({}));  NaN
    console.log(Number({x:1}));  NaN
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.作为if语句的判断条件

    由于空数组[]和空对象{}都是Object类型,因此用if()判断的时候,都为true

    其实本来二者转化为布尔值就是true:

    console.log(Boolean([]));  //true
    console.log(Boolean({}));  //true
    
    • 1
    • 2

    4.和布尔值比较却不是true

    这是因为任何值和布尔值比较时,两边都会转化为Number类型

    console.log([]==true);  //false(0 === 1)
    console.log({}==true); //false(NaN === 1)
    
    • 1
    • 2

    5.只有以下几个类型布尔值为false

    '空字符串'0、NaNnullundefined

    6.如何判断数组为空

    if(!arr.length)  如果数组为空,那么执行if里面的逻辑
    
    • 1

    或者

    if(!arr[0])  如果数组为空,那么执行if里面的逻辑 (空数组里面的元素是undefined)
    
    • 1

    7.关于null和undefined和0比较

    undefined 只与 null 相等,他们自身也与其自身相等,除此之外其他值都不和他们想等

    但是相等性检查 == 和普通比较符 > < >= <= 的代码逻辑是相互独立的!
    进行值的比较时,null 会被转化为数字,因此它被转化为了 0。这就是为什么null >= 0 返回值是 true;

    但是!null在做==判断时,不会进行类型的转换,这就是为什么null == 0 返回的是false

    而undefined进行转换为值时又不一样了, (1) 和 (2) 都返回 false 是因为 undefined 在比较中被转换为了 NaN,而 NaN 是一个特殊的数值型值,它与任何值进行比较都会返回 false。

    console.log( undefined >= 0 ); // false (1)
    console.log( undefined < 0 ); // false (2)
    console.log( undefined == 0 ); // false (3)
    console.log( undefined==null );  //true (4)
    console.log( null > 0 );  // (1) false
    console.log( null == 0 ); // (2) false
    console.log( null >= 0 ); // (3) true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    参考博客:
    https://blog.csdn.net/IT_10/article/details/81806665
    https://blog.csdn.net/Fky_mie/article/details/115856032

  • 相关阅读:
    高防服务器与云防产品都适用哪些情况
    使用Apache和内网穿透实现私有服务公网远程访问——“cpolar内网穿透”
    Linux ps -ef|grep去除 grep --color=auto信息
    Springmvc中对请求的处理
    Spring概述
    误删除文件怎么找回呢?
    为何学linux及用处
    Spring基础:快速入门spring cloud(1):Spring Cloud介绍
    【趣学算法】分治算法
    【嵌入式开源学习】__发现了一个很棒的开源项目CSON
  • 原文地址:https://blog.csdn.net/weixin_42044763/article/details/127787731