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 ...