JavaScript中的空数组和空对象布尔值是true还是false? | 您所在的位置:网站首页 › 布尔值只有true和false吗 › JavaScript中的空数组和空对象布尔值是true还是false? |
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 实验室设备网 版权所有 |