==与===的区别(JS) 您所在的位置:网站首页 start与beginning的区别 ==与===的区别(JS)

==与===的区别(JS)

2023-09-01 21:43| 来源: 网络整理| 查看: 265

两者都是判断等式两边是否相等,最大的区别就是==会进行类型的转换之后再判断两者是否相等,而===不会进行数据类型的转换,先判断两边的数据类型是否相等,如果数据类型相等的话才会进行接下来的判断,再进行等式两边值得判断,可以理解为只有等式两边是全等(数据类型相同,值相同)的时候结果才会是true,否则全为false。

==判断等式两边是否相等的情况:

(1)null、undefined和不同类型比较,都是false(null和undefined结果为true)

(2)NaN和任何数据进行比较,都是false(包括NaN和NaN相比较也为false)

(3)布尔值是转换为数字1或0再和其他数据进行比较

             拓展:   不同数据转换成布尔值的结果:              

console.log(Boolean('')); //false console.log(Boolean({})); //true console.log(Boolean([])); //true console.log(Boolean(null)); //false console.log(Boolean(undefined)); //false console.log(Boolean(NaN)); //false console.log(Boolean(Object)); //true

(4)数字和其他简单数据类型进行比较时,会尝试将其他数据类型转换成数值型再进行比较

                **其他数据类型默认转数字使用的是Number()  

console.log(""==false); //true console.log(parseInt("")); //NaN console.log(Number("")); //0 console.log(""==0); //true

(5)对象和其他简单数据类型进行比较的时候,会尝试使用对象的valueOf()和toString()方法将对象转换为原始值进行比较:

        ①对象.toString()返回值只有[ object Object ]                

let obj = { name:'leon', age:18 }; console.log(obj.toString()); //[object Object] console.log(obj.valueOf()); //{name: 'leon', age: 18} let obj = {}; console.log(obj.toString()); //[object Object] console.log(obj.valueOf()); //{}

        ②数组  [ ].toString()返回值是空  其他数组.toString()返回值是字符 ,一个成员一个字符逗号分隔   

let arr1=[1,2,3]; console.log(arr1.toString()); //1,2,3 console.log(arr1.valueOf()); //[1, 2, 3] let arr=[]; console.log(arr.toString()); //空 console.log(arr.valueOf()); //[]

        ③其他的对象function  reg  返回字符串        

function fn(){ console.log("你是最棒的!"); } console.log(fn.toString()); console.log(fn.valueOf()); let reg = /^[^_$]\w{5,}@(163|126|qq|sina)\.(com|cn|net)$/; console.log(reg.toString()); console.log(reg.valueOf());

运行结果截图:

(6)两者同为引用类型时,必须是指向同一个引用地址才相等,否则不相等

(7)-0 == +0   结果为:true

全等比较(===)不转换数据类型,数据类型和内容必须完全一致才是相等

全等比较(===)两边是否相等的情况:

(1)类型不同,一定不相等

(2)两个同为数值,并且相等,则相等;若其中一个为NaN,一定不相等

(3)两个都为字符串,每个位置的字符都一样,则相等

(4)两个同为true,或是false,则相等

(5)两个值都引用同一个对象或函数,则相等,否则不相等(引用类型地址空间可能不一样)

(6)两个值都为null,或undefined,则相等

(7*)两者同为引用类型时,必须是指向同一个引用地址才相等,否则不相等(5的补充)

(8)-0 === +0   结果为:true



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有