前端必须知道的面试总结之 === 和 ==的区别

228 阅读4分钟

前言:相信很多小伙伴在面试的时候会考到=== 和 ==的区别,这是一个很简单但又很容易混淆的知识,只需稍加记忆,就能完美地回答面试官提出的这个问题,这篇文章会先为您讲解等于运算符(==)和全等运算符 (===)的基础知识,然后再对其进行总结。事不宜迟,让我给大家揭开这个问题答案吧!

一、等于运算符(==)

等于运算符(==)检查其两个操作数是否相等,并返回Boolean结果。与严格相等运算符(===)不同,它会尝试强制类型转换并且比较不同类型的操作数。

语法: x == y

(1)如果两个操作数是不同类型的,就会尝试在比较之前将它们转换为相同类型

①当数字与字符串进行比较时,会尝试将字符串转换为数字值。

②如果操作数之一是Boolean,则将布尔操作数转换为1或0。

③如果是true,则转换为1

④如果是 false,则转换为0

⑤如果操作数之一是对象,另一个是数字或字符串,会尝试使用对象的valueOf()toString()方法将对象转换为原始值。

        // 1、当数字与字符串进行比较时,会尝试将字符串转换为数字值。
        console.log(123 == '123'); //输出的结果为true
​
        //2、如果操作数之一是Boolean,则将布尔操作数转换为1或0。 
        //3、如果是true,则转换为1。
        //4、如果是 false,则转换为0。
        console.log(123 == true); //输出的结果为false,会先把true转换为1,再与123比较
        console.log(1 == true); //输出的结果为true,会先把true转换为1,再与1比较
        console.log(0 == false); //输出的结果为true,会先把false转换为0,再与0比较
        
        //5、与对象比较
         const object1 = {"key": "value"}  //建立对象1
        const object2 = {"key": "value"}; //建立对象2object1 == object2 //输出的结果为 false
        object2 == object2 // 输出的结果为true
(2)如果操作数具有相同的类型,则将它们进行如下比较:

①String:仅当两个操作数具有相同顺序的相同字符时才返回。true

②Number:仅当两个操作数具有相同的值时才返回。并被视为相同的值。如果任一操作数为非数字型,则返回。true 、+0 、 -0、 NaN 、 false

③Boolean:仅当操作数为两个或两个时才返回。true、true、false、true


        console.log(123 == '123a'); //输出的结果为false
        console.log(1 == 1); //输出的结果为true
        console.log('hello' == 'hello'); //输出的结果为true

二、全等运算符 (===)

全等运算符 (===) 会检查它的两个操作数是否相等,包括操作数的类型和值是否相等,并且返回一个布尔值结果。与相等运算符不同,全等运算符总是认为不同类型的操作数是不同的。

语法:x === y

①如果两个操作数类型不同,则比较结果一定是false。

②如果两个操作的的类型相同,而值不同,则比较结果一定是false。

③如果两个操作数的类型不相同,而值相同,则比较结果一定是false。

④如果两个操作数的类型和值相同,则比较的结果为true。


​
        //全等运算符的比较
​
        console.log("hello world" === "hello world"); // 比较结果为true
        console.log("hello" === "hola"); // 比较结果为false
​
        console.log(3 === 3); // 比较结果为true
        console.log(3 === 4); // 比较结果为false
​
        console.log(true === true); // 比较结果为true
        console.log(true === false); // 比较结果为false
​
        console.log(null === null); // 比较结果为true

三、=== 和 ==的区别

(1)当进行==比较时: 先判断等号左右两个操作数的数据类型,如果数据类型相同, 则进行===比较;如果数据类型不同, 则会把两边的数据类型转换为同一类型, 转换成同一类型后再进行比较。

(2)===比较时, 如果等号左右两个操作数的数据类型不同,直接输出判断结果为false。

注意点

“=”:这个=表示赋值,不表示运算符;

“==”:表示等于(值);

“===”:表示全等于(类型和值) ;

资料参考链接:

严格相等 (===) - JavaScript |断续器 (mozilla.org)

严格相等 (===) - JavaScript |断续器 (mozilla.org)