- 相關(guān)推薦
JavaScript中的操作符和判斷規則的介紹
JavaScript中,==與===操作符均可用于判斷兩個(gè)值是否相等;不同之處在于,如果進(jìn)行判斷的兩個(gè)值類(lèi)型不一致,===操作符會(huì )直接返回false,而==操作符則會(huì )在類(lèi)型轉換后再進(jìn)行判斷。詳細的判斷規則如下:
===操作符的判斷規則
1.如果兩個(gè)值的類(lèi)型不一致,返回false。
2.如果兩個(gè)值的類(lèi)型一致,值一致,返回true。NaN是一個(gè)特例,NaN===NaN返回false。
3.如果兩個(gè)值均為object類(lèi)型,那么與Java一樣,除非兩者引用一致(reference指向同一個(gè)對象地址),不然即使object中的內容完全一樣,也認為這兩個(gè)值不一致,相應的操作將返回false。比如,新建兩個(gè)內容完全一樣的數組,對它們進(jìn)行===操作后返回結果為false — 雖然它們的內容完全一樣,但還是屬于兩個(gè)不同的對象。
4.0===-0返回true。
==操作符的判斷規則
==操作符會(huì )將值進(jìn)行類(lèi)型轉換后再進(jìn)行比較,其類(lèi)型轉換遵循以下原則:優(yōu)先轉換成number后進(jìn)行比較,Date對象則優(yōu)先轉換成string后進(jìn)行比較。具體判斷規則如下:
1.如果兩個(gè)值類(lèi)型一致,執行===操作后返回。
2.null==undefined為true。
3.true將轉換成1后進(jìn)行比較,false將轉換成0后進(jìn)行比較。
4.如果其中一個(gè)值為對象,則將其轉換成number后再進(jìn)行比較,Date對象除外。
5.如果其中一個(gè)值為Date對象,則將其轉換成string后再進(jìn)行比較。
實(shí)驗
復制代碼 代碼如下:
console.log("3" === 3);//false
console.log(NaN === NaN);//false
var a = {x:1, y:2};
var b = {x:1, y:2};
var c = a;
console.log(a === b);//false
console.log(a === c);//true
console.log(0 === -0);//true
console.log("3" == 3);//true
console.log(null == undefined);//true
console.log(true == 1);//true
console.log(true == 9);//false
console.log([9] == 9);//true
console.log([9] == "9");//true
var d = new Date();
var s = d.toString();
var n = d.valueOf();
console.log(d == s);//true
console.log(d == n);//false
【JavaScript中的操作符和判斷規則的介紹】相關(guān)文章:
Javascript中arguments對象的詳解和使用方法08-20
有關(guān)深入理解JavaScript中的并行處理的介紹10-14
JavaScript中的with關(guān)鍵字07-24
在Java中執行JavaScript代碼07-14
抽象語(yǔ)法樹(shù)在JavaScript中的應用08-18
JavaScript中的三種對象10-24
perl- javascript中class的機制05-03
JavaScript數組常用方法介紹09-04