javascript双等号引起的类型转换

Posted 很好玩的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript双等号引起的类型转换相关的知识,希望对你有一定的参考价值。

隐性类型转换步骤

一、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。

二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)

三、接着看双等号前后有没有字符串, 有三种情况:

1、对方是对象,对象使用toString进行转换;

2、对方是数字,字符串转数字;(前面已经举例)

3、对方是字符串,直接比较;

4、其他返回false

四、如果是数字,对方是对象,对象取valueOf进行比较, 其他一律返回false

五、null, undefined不会进行类型转换, 但它们俩相等

举例巩固提高

下面我们一起来做做下面的题目吧!

var a;
console.dir(0 == false);//true

console.dir(1 == true);//true


console.dir(2 == {valueOf: function(){return 2}});//true


console.dir(a == NaN);//false
console.dir(NaN == NaN);//false

 console.dir(8 == undefined);//false

console.dir(1 == undefined);//false

 console.dir(2 == {toString: function(){return 2}});//true

 console.dir(undefined == null);//true

 console.dir(null == 1);//false

  console.dir({ toString:function(){ return 1 } , valueOf:function(){ return [] }} == 1);//true

  console.dir(1=="1");//true
  console.dir(1==="1");//false

 

以上是关于javascript双等号引起的类型转换的主要内容,如果未能解决你的问题,请参考以下文章

js操作符类型转换大全(前端面试题之操作符)

JavaScript中==和===的区别

js中两个等号(==)和三个等号(===)的区别

双等号 (==) 和三等号 (===) 之间的 JavaScript 性能差异

双等号 (==) 和三等号 (===) 之间的 JavaScript 性能差异

JavaScript中三个等号和两个等号的区别(== 和 ===)浅析(转)