記錄下平時的知識點、心得等,如果理解有誤還請提出以便及時修正...
1、toprimitive(obj, type):
js內部存在toprimitive(obj, type)隱含轉換方法,實質意義上是呼叫obj物件的valueof方法及tostring方法將該物件轉換為原始型別,
其中,date型別資料預設type為 string(tostring),其他物件型別為 number(valueof),如果兩種方法均未能得出乙個原始型別資料,則丟擲error;
複製**
2、if中的型別轉換:
1) boolean型別:無需轉換
2) string型別:""為false,其他為true
3) number型別:0為false,其他為true
4) object型別:null為false,其他為true
5) function型別:為true
6) undefined、nan:為false
複製**
3、string()、number()、boolean()方法:
1) string方法:物件期望型別為string,先呼叫tostring方法,若結果不是基本型別再呼叫valueof方法進行判斷;
2) number方法:物件期望型別為number,先呼叫valueof方法,若結果不是基本型別再呼叫tostring方法進行判斷;
3) boolean方法:""、0、null、undefined、nan預設為false,其他為true;
複製**
4、+-*÷時的型別轉換:
1) js內建物件及function等object中,不同object呼叫valueof及tostring方法得到的結果各有不同,如下:
valueof:
undefined ---> nan
null ---> +0
boolean ---> 1/0
string ---> parseint、parsefloat解析
object ---> 呼叫自身valueof、tostring方法
tostring:
undefined ---> "undefined"
null ---> "null"
boolean ---> "true"/"false"
number ---> "(number自身)"
object ---> 呼叫自身tostring、valueof方法
2) 計算時,遵循以下規則:
1. 若存在某一物件為string型別,則將其他物件均轉為string(通過呼叫valueof ---> tostring);
2. 物件均為object型別,則使用toprimitive方法將其轉換為原始型別;
3. 均轉為number型別;
3) 部分知識點:
1. array.valueof、object.valueof ---> 預設情況下返回自身;
2. +、-跟任何物件表示將該物件轉為number型別,object型別仍然是通過toprimitive方法進行;
3. parseint(str, radix)方法:
(1) 接收乙個string(待解析)引數,乙個number(進製2-36,預設10);
(2) 當str型別不為string型別時,則使用toprimitive方法將其轉換為原始型別(tostring ---> valueof);
(3) 若str以"0x"開頭,則忽略radix引數,預設使用16進製制;
(4) 若radix超出範圍,則忽略radix引數,使用預設進製;
複製**
5、==時的型別轉換:
1) 存在number型別,則將其他型別均轉為number型別再進行比較;
2) 存在boolean型別,則將boolean型別轉為number型別再進行比較;
3) null == undefined;
4) 存在基本型別 (string) 及object型別,則將object物件應用toprimitive方法後再進行比較;
5) 特殊情況:"" == [null]、"" == [undefined],這裡null及undefined作為empty值進行處理;
複製**
6、>《時的型別轉換:
1) 存在string型別,則將其他型別均轉為string型別再進行比較;
2) 均轉為number型別再進行比較;
3) >=、<=時,第4及第3種情況均會進行判斷,所以出現了 >=/<= ,{} >=/<= {}
複製**
7、坑點:
1) + {} = "[object object]"
{} + = 0
其中,.tostring() = "",{}.tostring() = "[object object]",而第二行 {} 瀏覽器會將其預設作為**塊進行執行而非乙個變數;
2) == !
其中,!操作符優先順序高於==,因此先執行!操作,! === false,進而比較 == false;複製**
Js 隱含著的型別轉換
var x newboolean false console.log x if x 物件型別 var x1 newarray var x2 newstring var x3 newnumber 存在乙個物件型別轉bool型別轉換 if x1 x2 x3 由上所知道 所有物件轉換成bool型別都為tr...
JS中的型別轉換
1 隱式型別轉換 如果相等操作的兩個變數不是同一型別,那麼相等運算子會嘗試進行一些型別轉換 比較運算子。運算元可以是任何型別,但是只有數字和字串才能真正執行比較操作。減操作符將兩個運算元都轉換為數字。加操作符,如果乙個運算元是字串,那麼另外乙個運算元也會轉換為字串。一元加會將其運算元轉換為數字。轉換...
js中的型別轉換
運算子 兩個運算元的型別不相同時 物件到數字的轉換 空陣列轉換為數字0 boolean true number 0 number nan number false 0因此 console.log true fasle console.log true true false console.log f...