== 和 ===的區別
使用雙等號進行相等判斷時,如果兩邊的型別不一致,則會進行強制型別轉化后再進行比較;
使用三等號進行相等判斷時,如果兩邊的型別不一致時,不會做強制型別準換,直接回傳 false;
==的判斷流程
- 首先判斷兩者型別是否相同,相同的話就比較兩者的大小;型別不相同的話,就會進行型別轉換,
- 判斷是否在對比 null 和 undefined,是的話就會回傳 true,
- 判斷兩者型別是否為 String 和 Number,是的話就會將字串轉換為 number,
- 判斷其中一方是否為 Boolean,是的話就會把 Boolean 轉為 Number 再進行判斷,
- 判斷其中一方是否為 Object 且另一方為 String、Number 或者 Symbol,是的話就會把 Object 轉為原始型別再進行判斷,
強制型別轉換規則
string轉number
String 型別的值轉換如同使用 Number() 函式進行轉換,如果包含非數字值則轉換為 NaN,空字串為 0,
- 如果字串包含數值字符,包括數值字符前面帶加、減號的情況,則轉換為一個十進制數值,如果數值前有前置0,會忽略,
- 如果字串包含有效的浮點值格式,則會轉換為相應的浮點值(同樣,忽略前面的零),
- 如果字串包含有效的十六進制格式如"0xf",則會轉換為與該十六進制值對應的十進制整數值,
- 如果是空字串(不包含字符),則回傳0,
- 如果字串包含除上述情況之外的其他字符,則回傳NaN,
Boolean轉Number
true轉1,false轉0,其中Boolean為false的值有null、undefined、false、+0、-0、NaN、空字串
物件轉基本型別
物件在轉換基本型別時,會呼叫 valueOf 和 toString,如果傾向于將物件轉換為Number,則呼叫valueOf();傾向于轉換為String型別,則呼叫toString(),
- 普通物件:valueOf方法回傳物件本身,而toString方法回傳"[object ObjectName]";
- Array:valueOf方法放回陣列本身,而toString方法將 Array 的每個元素轉換為字串,并將它們依次連接起來,兩個元素之間用英文逗號作為分隔符進行拼接
- Date:valueOf方法放回時間戳,而toString方法回傳日期的文本表示,
- Function:valueOf方法回傳方法本身,而toString方法回傳"function functionname() { [native code] }",
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/503419.html
標籤:其他
下一篇:# JavaScript 函式
