JavaScript中「 」比較規則

2021-09-24 08:04:18 字數 2332 閱讀 1020

1、(js中有6個值為false,分別是: 0, ''(或者雙引號), null, undefined,nan,false)

console.log(new boolean(false)==false);   //true

console.log(new boolean(true)==true); //true

// 另外,js中有boolean物件,例如:通過newboolean(false)能獲得乙個初始值為false的布林物件,既然是物件,我們 獲得的就永遠是true,所以if(new boolean(false)).再次強調,用boolean()或兩次取非來獲取布林值.

複製**

2、undefined 和 null 互相比較返回true, 和自身比較也返回true, 其他情況返回false;

3、infinity只和自身比較返回true;

4、nan,{},和任意值比較都是返回false;

5、如果其中乙個值是true,則將其轉換為1再進行比較。如果其中乙個值是false,則將其轉換為0再進行比較

6、要比較相等性之前,不能將null和undefined轉換成其他任何值

7、 如果乙個值是數字,另乙個是字串,先將字串轉換為數值,然後使用轉換後的值進行比較

8、 如果乙個值是物件,另乙個值是數字或字串,將會先使用tostring()和valueof()將物件轉換為原始值,然後再進行比較

(這種比較與是有規則的,並且可以用**來驗證js內部的執**況,將乙個簡單型別(這裡指除undefined與null的值)與乙個物件比較時,先呼叫物件的valueof方法,以期待返回乙個標量,如果物件的valueof方法返回的仍然是乙個復合物件的話,就接著呼叫物件的tostring方法以期待返回乙個標量,如果仍然沒有返回標量的話,就判為不相等,如果valueof或tostring方法之一返回乙個標量,就用這個標量同==另一邊的標量進行比較 )

var obj={};  

alert(obj=="abc");//false

obj.tostring=function

() ;

alert(obj=='abc');//這時就返回true了

alert(obj==123);//false

obj.valueof=function

() ;

alert(obj==123);//true!!!

obj.valueof=undefined;//先將這個方法清空掉,以免受上面的**影響

alert(obj==true);//false

obj.valueof=function

() ;

alert(obj==true);//true!!!!

複製**

9、 如果兩個運算元都是物件,則比較它們是不是同乙個物件。如果兩個運算元都指向同乙個物件,則相等操作符返回true,否則返回false

ecmascript規範:

1:a與b進行比較,如果a與b是number,string,boolean這三種型別中的一種,並且a與b的型別不同,那麼就將a與b都轉換成數字再進行比較

var a="true";  

var b=true;

alert(a==b);

//結果等同於下面的**

alert(number(a)===number(b));

複製**

2:如果a是number,string,boolean這三種型別中的一種,而b是乙個復合物件時(object,array等) 則對b執行toprimitive操作(這步是js直譯器執行的,toprimitive方法的實現,正是依次去呼叫物件的valueof,tostring方法,直到其中乙個方法返回乙個基本值,如果這兩個方法沒有返回基本值 ,那就認定不相等 )
var a="abc";  

var b={};

alert(a==b);

//上面的一行**在js解析時將被解釋成

//a==toprimitive(b);

複製**

number,boolean,string,undefined這幾種基本型別混合比較時,會將其轉換成數字再進行比較 基本型別與復合物件進行比較時,會先將復合物件轉換成基本型別(依次呼叫valueof與tostring方法)再進行比較 undefined被當成基本型別,undefined轉換成數字是nan,因此undefined與除null之外的其它型別值進行比較時始終返回false(注意nan==nan返回false) null被當成復合物件,由於null沒有valueof與tostring方法,因此和除了undefined之外的其它型別值進行比較時始終返回false

JavaScript中比較操作符

var s var ss 0 typeof s為string 字串為空 則表示boolean型別的false number中0代表false 1代表true typeof false為boolean 值要相同,同時型別也要相同,屬於嚴格上的比較 if ss false alert 不嚴格比較 n字串...

前端 強大的javaScript 中比較有趣的事

一 查詢所需的元素的比較方便的語法糖 1.除基本的id,class 和tag的方法外 介紹一種基於元素位置的查詢方法 document.elementfrompoint x,y 獲取點位置的元素 2.元素find 及基本定位的時候可以借用某些元素屬性值進行精確定位 attribute value 匹...

JavaScript型別比較和轉化規則

number的轉化規則 1.原始型別值 number 123 123 number 123 123 number 123abc nan number 0 number true 1 number false 0 number null 0 number undefined nan number t ...