Javascript中的相等與不等運(yùn)算
更新時(shí)間:2010年04月25日 15:31:15 作者:
在 javascript 中,可以使用 == 來比較兩個(gè)數(shù)據(jù)是否相等,如果兩個(gè)數(shù)據(jù)的類型不同,那么,將在進(jìn)行轉(zhuǎn)換后進(jìn)行比較
轉(zhuǎn)換的規(guī)則如下:
如果其中一個(gè)操作數(shù)的類型為 Boolean ,那么,首先將它轉(zhuǎn)換為數(shù)字類型,false 轉(zhuǎn)換為 0, true 將轉(zhuǎn)換為 1。
如果其中一個(gè)操作數(shù)的類型是字符串,另外一個(gè)為數(shù)字類型,那么,將字符串轉(zhuǎn)換為數(shù)字進(jìn)行比較。
如果其中一個(gè)操作數(shù)的類型是字符串,另外一個(gè)為 object 類型,那么,將調(diào)用對象的 toString 方法之后,比較字符串。
如果其中一個(gè)操作數(shù)的類型是數(shù)字類型,另外一個(gè)為 object 類型,那么,將對象轉(zhuǎn)換為數(shù)值后進(jìn)行數(shù)字比較。
以下的規(guī)定了一些特殊的比較:
null 和 undefined 是相等的。
null 和 undefined 不會(huì)轉(zhuǎn)換為任何其他類型
如果任何一個(gè)操作的結(jié)果為 NaN,那么相等比較返回 false,不相等比較返回 true。注意,即使兩個(gè)操作數(shù)都為 NaN,返回結(jié)果一樣是 false,也就是說,NaN 不等于 NaN。
如果兩個(gè)操作數(shù)都是對象,那么比較它們引用的值,如果引用同一個(gè)對象,那么,返回真,否則,返回假。
alert(null == undefined); // true
alert(undefined == null); // true
alert(true == 1); // true
alert(false == 0); // true
alert(true == 2); // false
var obj = {};
alert(10 == obj); // false
完全相同的比較 === 和不完全相等 !==
完全相同的比較用來比較不進(jìn)行轉(zhuǎn)換是否相等,例如:
var a = "100";
var b = 100;
alert(a == b); // true
alert(a === b); // false
== 比較將返回真,因?yàn)?“100” 首先轉(zhuǎn)換為數(shù)字 100, 然后與數(shù)字 100 進(jìn)行比較,結(jié)果相等。
=== 比較將返回假,因?yàn)樽址?”100” 不經(jīng)過轉(zhuǎn)換的話,與數(shù)字 100 不相等。
!== 用于比較在不轉(zhuǎn)換的情況下,是否不相等。
alert(a != b); // false
alert(a !== b); // true
第一種情況將返回假,因?yàn)檗D(zhuǎn)換后是相等的。第二種情況將返回真,因?yàn)椴唤?jīng)過轉(zhuǎn)換的話,他們一個(gè)是字符串,一個(gè)是數(shù)字,是不相等的。
如果其中一個(gè)操作數(shù)的類型為 Boolean ,那么,首先將它轉(zhuǎn)換為數(shù)字類型,false 轉(zhuǎn)換為 0, true 將轉(zhuǎn)換為 1。
如果其中一個(gè)操作數(shù)的類型是字符串,另外一個(gè)為數(shù)字類型,那么,將字符串轉(zhuǎn)換為數(shù)字進(jìn)行比較。
如果其中一個(gè)操作數(shù)的類型是字符串,另外一個(gè)為 object 類型,那么,將調(diào)用對象的 toString 方法之后,比較字符串。
如果其中一個(gè)操作數(shù)的類型是數(shù)字類型,另外一個(gè)為 object 類型,那么,將對象轉(zhuǎn)換為數(shù)值后進(jìn)行數(shù)字比較。
以下的規(guī)定了一些特殊的比較:
null 和 undefined 是相等的。
null 和 undefined 不會(huì)轉(zhuǎn)換為任何其他類型
如果任何一個(gè)操作的結(jié)果為 NaN,那么相等比較返回 false,不相等比較返回 true。注意,即使兩個(gè)操作數(shù)都為 NaN,返回結(jié)果一樣是 false,也就是說,NaN 不等于 NaN。
如果兩個(gè)操作數(shù)都是對象,那么比較它們引用的值,如果引用同一個(gè)對象,那么,返回真,否則,返回假。
alert(null == undefined); // true
alert(undefined == null); // true
alert(true == 1); // true
alert(false == 0); // true
alert(true == 2); // false
var obj = {};
alert(10 == obj); // false
完全相同的比較 === 和不完全相等 !==
完全相同的比較用來比較不進(jìn)行轉(zhuǎn)換是否相等,例如:
var a = "100";
var b = 100;
alert(a == b); // true
alert(a === b); // false
== 比較將返回真,因?yàn)?“100” 首先轉(zhuǎn)換為數(shù)字 100, 然后與數(shù)字 100 進(jìn)行比較,結(jié)果相等。
=== 比較將返回假,因?yàn)樽址?”100” 不經(jīng)過轉(zhuǎn)換的話,與數(shù)字 100 不相等。
!== 用于比較在不轉(zhuǎn)換的情況下,是否不相等。
alert(a != b); // false
alert(a !== b); // true
第一種情況將返回假,因?yàn)檗D(zhuǎn)換后是相等的。第二種情況將返回真,因?yàn)椴唤?jīng)過轉(zhuǎn)換的話,他們一個(gè)是字符串,一個(gè)是數(shù)字,是不相等的。
相關(guān)文章
js實(shí)現(xiàn)滑動(dòng)觸屏事件監(jiān)聽的方法
這篇文章主要介紹了js實(shí)現(xiàn)滑動(dòng)觸屏事件監(jiān)聽的方法,適用于手機(jī)端觸屏滑動(dòng)事件的監(jiān)聽技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05
JS實(shí)現(xiàn)鼠標(biāo)經(jīng)過好友列表中的好友頭像時(shí)顯示資料卡的效果
需求為當(dāng)用戶鼠標(biāo)經(jīng)過好友列表中好友頭像時(shí),顯示該好友的基本資料,其實(shí)也就是類似QQ客戶端的那種功能,下面是具體的實(shí)現(xiàn)思路及過程2014-07-07
微信小程序?qū)崿F(xiàn)登錄頁云層漂浮的動(dòng)畫效果
微信小程序目前的火熱程度相信不用多言,最近利用空余時(shí)間用小程序?qū)崿F(xiàn)了個(gè)動(dòng)態(tài)的登錄頁效果,所以下面這篇文章主要給大家介紹了利用微信小程序?qū)崿F(xiàn)登錄頁云層漂浮動(dòng)畫效果的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-05-05
深入認(rèn)識(shí)JavaScript中的函數(shù)
深入認(rèn)識(shí)JavaScript中的函數(shù)...2007-01-01
javascript實(shí)現(xiàn)多級聯(lián)動(dòng)下拉菜單的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)多級聯(lián)動(dòng)下拉菜單的方法,通過javascript自定義函數(shù)實(shí)現(xiàn)對多級聯(lián)動(dòng)下拉菜單的操作,是非常實(shí)用的技巧,需要的朋友可以參考下2015-02-02
微信小程序?qū)崿F(xiàn)動(dòng)態(tài)顯示和隱藏某個(gè)控件功能示例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)動(dòng)態(tài)顯示和隱藏某個(gè)控件功能,涉及微信小程序事件響應(yīng)及樣式動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-12-12
Bootstrap教程JS插件滾動(dòng)監(jiān)聽學(xué)習(xí)筆記分享
這篇文章主要為大家分享了Bootstrap教程JS插件滾動(dòng)監(jiān)聽學(xué)習(xí)筆記,內(nèi)容很詳細(xì),感興趣的小伙伴們可以參考一下2016-05-05

