看下列JavaScript代码,输出什么?解释==与===。

var undefined;
undefined == null; // true
1 == true;   // true
2 == true;   // false
0 == false;  // true
0 == '';     // true
NaN == NaN;  // false
[] == false; // true
[] == ![];   // true
  1. undefined与null相等,但不恒等(===)
  2. 一个是number一个是string时,会尝试将string转换为number
  3. 尝试将boolean转换为number,0或1
  4. 尝试将Object转换成number或string,取决于另外一个对比量的类型
  5. 所以,对于0、空字符串的判断,建议使用 “=” 。“=”会先判断两边的值类型,类型不匹配时为false。

那么问题来了,看下面的代码,输出什么,foo的类型为什么?

var foo = "11"+2-"1";
console.log(foo);
console.log(typeof foo);

执行完后foo的值为111,foo的类型为Number。

var foo = "11"+2+"1";    //体会加一个字符串'1' 和 减去一个字符串'1'的不同
console.log(foo);
console.log(typeof foo);

执行完后foo的值为1121(此处是字符串拼接),foo的类型为String。

发布了133 篇原创文章 · 获赞 0 · 访问量 3028

猜你喜欢

转载自blog.csdn.net/LuckXinXin/article/details/105132855