JS中的!=、== 、!==、===的用法和区别

xiaoxiao2021-02-28  117

var num = 12; var str = "12"; var test = 12; window.alert(num == test); //num test 相同类型,相同值 true window.alert(num === test); //num test 相同类型,相同值 true window.alert(test != num); //num test 相同类型,相同值 false window.alert(num == str); //把str转换为数字,检查是否相等 true window.alert(num != str); //== 的 非运算 false window.alert(num === str); //类型不同,直接返回false window.alert(num !== str); //num 与 str类型不同 意味着其两者不等 非运算自然是true

== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果

=== 和 !== 只有在相同类型下,才会比较其值

首先,==equality等同, ===identity 恒等 ,==,两边类型不同的时候,要先进行类型转换,再比较 ,===,不做类型转换,类型不容的一定不等

下面分别说明: 先说===,这个比较简单,下面的规则用来判断两个值是否===相等: 1、如果类型不同就【不相等】 2、如果两个都是数值,并且是同一个值那么【相等】;(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断) 3、如果两个都是字符串,每个位置的字符都一样,那么【相等】;否则【不相等】 4、如果两个值都是true,或者都是false,那么【相等】; 5、如果两个值都引用同一个对象或函数,那么【相等】,否则【不相等】 6、如果两个值都是null,或者都是undefined,那么【相等】

其次,就是==,根据以下规则 1、如果两个值类型形同,进行===比较 2、如果两个值类型不同,他们可能相等,根据下面规则进行类型转换在比较 a、如果是一个null,一个是undefined,那么【相等】 b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较 c、如果任一值是true,把它转换成1再比较,如果任一值是false,把它转换成0再比较 d、如果是一个对象,另一个是数值或字符,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试 valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,另说 e、任何其他组合,都【不相等】 举例:

“1” == true

类型不等,true会先转换成数值 1,现在变成 “1” == 1,再把”1”转换成 1,比较 1 == 1, 相等。

= 赋值运算符 == 等于 === 严格等于

例: var a = 3; var b = “3”;

a==b 返回 true a===b 返回 false

因为a,b的类型不一样

===用来进行严格的比较判断

var data = ({"val":"7","flag":"true"}); <FONT face=Verdana></FONT>

下面需要如何判断flag的值? 因为true加双引号==推测是字符串true 如果不加双引号===就是布尔值true 这个很重要,之前我一直没有搞清楚这一点

写法1

if(data.flag=true){…}else{..}

这样写怎么都是正确的,根本得不到else的值,原因是这种写法相当于

if(true){...}

写法2

if(data.flag==true){...} else{...}

没有这种写法

写法3

if(data.flag='true'){...}else{...}

这样写怎么都是正确的,根本得不到else的值,原因是这种写法相当于

if(true){...}

写法4

if(data.flag=='true'){...} else{...}

这个才是正确的写法

“=”:这个表示赋值,不是表示运算符 “==”:表示等于(值) “===”:表示全等于(类型和值)

本文转载浅谈JS中的!=、== 、!==、===的用法和区别

转载请注明原文地址: https://www.6miu.com/read-42902.html

最新回复(0)