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

来源:互联网 发布:天尚网络机顶盒 编辑:程序博客网 时间:2024/05/31 05:28
            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中的!=、== 、!==、===的用法和区别

原创粉丝点击