JavaScript中的空数组和空对象布尔值是true还是false? 您所在的位置:网站首页 布尔值只有true和false吗 JavaScript中的空数组和空对象布尔值是true还是false?

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

2023-12-22 15:12| 来源: 网络整理| 查看: 265

1.空数组和空对象都是Object类型 console.log(typeof []); //object console.log(typeof {}); // object 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 3.作为if语句的判断条件

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

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

console.log(Boolean([])); //true console.log(Boolean({})); //true 4.和布尔值比较却不是true

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

console.log([]==true); //false(0 === 1) console.log({}==true); //false(NaN === 1) 5.只有以下几个类型布尔值为false

'空字符串'、0、、NaN、 null、undefined

6.如何判断数组为空 if(!arr.length) 如果数组为空,那么执行if里面的逻辑

或者

if(!arr[0]) 如果数组为空,那么执行if里面的逻辑 (空数组里面的元素是undefined) 7.关于null和undefined和0比较

undefined 只与 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 ); // (1) false console.log( null == 0 ); // (2) false console.log( null >= 0 ); // (3) true

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有