var undefined;
undefined == null; // true
1 == true; // true
2 == true; // false
0 == false; // true
0 == ' '; // true
nan == nan; // false
== false; // true
== !; // true
// alert(!!) //true
// alert(!) //false
// alert( == 0) //true
// alert(false == 0) //true
分析:undefined與null相等 但不全等(===)
當為number與string時,會將string轉換為number;
number和boolean時,會將boolean轉換為number
number或string與object,會將object轉換成number或string
總之就是:
一、首先看雙等號前後有沒有nan,如果存在nan,一律返回false。
二、再看雙等號前後有沒有布林,有布林就將布林轉換為數字。(false是0,true是1)
三、接著看雙等號前後有沒有字串, 有三種情況:
1、對方是物件,物件使用tostring()或者valueof()進行轉換;四、如果是數字,對方是物件,物件取valueof()或者tostring()進行比較, 其他一律返回false2、對方是數字,字串轉數字;(前面已經舉例)
3、對方是字串,直接比較;
4、其他返回false
五、null, undefined不會進行型別轉換, 但它們倆相等
vara;
console
.dir(0
==false
);//true
console
.dir(1
==true
);//true
console
.dir(2
==});
//true
console
.dir(a
==nan
);//false
console
.dir
(nan
==nan
);//false
console
.dir(8
==undefined
);//false
console
.dir(1
==undefined
);//false
console
.dir(2
==});
//true
console
.dir
(undefined
==null
);//true
console
.dir
(null==1
);//false
console
.dir(,
valueof
:function
()}==1);
//true
console
.dir(1
=="1"
);//true
console
.dir(1
==="1"
);//false
(附:js中的資料型別轉換?)
函式轉換:parseint()、parsefloat()、tostring()
強型別轉換:boolean()、number()、string()
弱型別轉換:「==」、「-」、「+」、if()
(拓展:for迴圈中的效率問題?)
1.for(var i=0;i2.for(var i in arr)
3.for(var i=0,len=arr.length;i第三種效率更高!
在大資料下:
第三種方式比第一種執行速度快3~4倍;
至於第三種比第三種快100多倍開外
mysql 隱式轉換引起的bug
提問 乙個粗心,括號不小心打錯了地方,猜猜會是什麼執行結果?t 表order no為varchar型別。select from t where order no in u123 u234 and type in 10,11 語法錯誤?row 0?答案 實際情況是,這句sql並沒有語法錯誤,而是將全部...
js 隱式轉換
1.數字number與字串string相加的就,最後會得到乙個字串string 1 3 13 2.數字number與字串string相減,最後會得到乙個數字number 1 0 1,s 0 nan 3.數字number與字串string相乘 最後會得到乙個數字number 1 10 10,s 10 ...
js隱式轉換
js基礎資料型別 string number boolean null undefined symbol 當運算子在運算時,如果運算子兩邊的資料型別不一致,那麼cpu就無法進行計算。js的編輯器會自動將運算子兩邊的資料轉換為同一型別,從而讓計算機識別並可以進行計算,這一轉換過程由編譯器自動自行,不需...