JavaScrpit中==和===等号的区别

 前言:  在js中我们经常会用到=====等号,一起来研究一下两者之间的区别,在Javascrpit中判断相等关系有双等号(==)和三等号(===)两种,其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否完全相等;

1.在接下来的比较之前,先了解一下什么是简单数据类型,在Es6之前,简单的数据类型有,Number(数字),String(字符串),Boolean(布尔),null(空),underfined(未定义),

复杂的数据类型有Arway(数组),{}对象,function(函数)

2.接下来,我们要明确的一点是,==之间会进行强制转换,两个等号,(===)在进行比较的时候

首先要先判断两边之间的数据类型是否相等,在判断值是否相等,两者同时满足。

总共有3种比较的方式

3.简单数据类型之间的转化方式

两边都是简单类型,类型不同,则先转换为数字比较(其中Boolean只有两个值:true==1,false==0,null与underfined相等,字符串数字等于数字值,空字符串 “”==0)

  alert('11' == 11) //true
    alert('11' === 11) //false

解析: 第一个式子在进行比较的时候,左边是字符串,右边是数字类型,在进行比较的时候,因为是==会进行强制的转换,左边的字符串型会被转换成数字类型进行比较;

    console.log(false == 0);//true
    console.log(false === 0); //false

解析: 左边为布尔型,右边为数字型, 又因为是(==),在比较的时候会进行类型的转换,把false转换为数字0进行比较,所以打印出的结果是true,第二个式子,两边的类型不一样所以为false;

    console.log(undefined == null); //true
    console.log(null == null); //true
    console.log(underfined == undefined); //true
    console.log(null == 0); //false
    console.log(undefined == 0); //false

可以看出:undefined一般是声明后未赋值的变量的默认值,表示"不知道是什么值,未定义的";null表示"空值",表示是"无值的"。

undefind和null在进行 == 比较时,会进行强制类型转换,认为两者的值是相等的,都表示"值的空缺",并且各自与自身也相等。除此之外,null和undefined与任何值都不相等。

    console.log('' == 0); //true

解析:'' 会被隐式转换成0进行比较。

4.复杂数据类型之间进行比较

  复杂数据类型比较的是地址

var d=new Date();
var a=new Array()
a==d	                    false
a===d                       false

解析:

当比较的两个对象是Object类型的时候,==和===的效果是一样的,因为两个不同对象之间的值是无法直接进行比较的,也是无法进行转换的,So,两个比较全为false;

5.复杂类型和简单类型进行比较

复杂数据类型和和简单的数据类型比较,会先将复杂的数据类型转化为简单的数据类型,然后在进行比较

   var arr = [1]
    var v = 1;
    console.log(arr == v); //true
[] ==[] false

猜你喜欢

转载自blog.csdn.net/qq_59076775/article/details/120750913
今日推荐