以下结果里,返回‘false’的是:
A. []==true
B. !![]
C.NaN ==NaN
D.null ==undefined
答案:AC
解析:
==判断时,会转换为数值Number进行比较; === 判断时,按实际类型和值比较
undefined衍生自null,所以null == undefined为true,但全等判断结果为false;
NaN不与任何值相等,包括它自身
- 对于空数组[]
转换为字符串,为“”;其他非空数组直接转换为"元素"
转换为数值,为0;其他非空数组转换为数值,为NaN
转换为布尔值,为true
console.log("--"+[].toString()+"--");//----
console.log("--"+String([])+"--");//----
console.log(Number([]));//0
console.log(Boolean([])); //true
- 对于空对象{}
转换为字符串,为Object,不管是否为空
转换为数值,为NaN,不管是否为空
转换为布尔值,为true
console.log("--"+{}.toString()+"--");//--[object Object]--
console.log("--"+String({})+"--");//--[object Object]--
console.log(Number({}));//NaN
console.log(Boolean({})); //true