看下列代码,输出什么?解释原因。
var undefined; undefined == null; 1 == true; 2 == true; 0 == false; 0 == ''; NaN == NaN; [] == false; [] == ![];
拓展练习:
看下面的代码,输出什么,foo的类型为什么?
var foo = "11"+2-"1"; console.log(foo); console.log(typeof foo);
答案请往下翻
•undefined与null相等,但不恒等(===)
•一个是number一个是string时,会尝试将string转换为number
•尝试将boolean转换为number,0或1
•尝试将Object转换成number或string,取决于另外一个对比量的类型
•所以,对于0、空字符串的判断,建议使用 "===” 。"===”会先判断两边的值类型,类型不匹配时为false。
var undefined;undefined == null; // true 1 == true; // true 2 == true; // false 0 == false; // true 0 == ''; // true NaN == NaN; // false [] == false; // true [] == ![]; // true
var foo = "11"+2+"1"; //体会加一个字符串'1' 和 减去一个字符串'1'的不同 console.log(foo); console.log(typeof foo); //执行完后foo的值为1121(此处是字符串拼接),foo的类型为String。