js的一些潛在規(guī)則使用分析
目錄
- 為什么開發(fā)中建議使用void 0 來代替undefined
- 為什么開發(fā)中將未賦值的變量賦值為null,而不是undefined
- String類型的長度
- 為什么parseInt在將字符串轉(zhuǎn)為數(shù)字的時候,需要指定第二個參數(shù)
- 對象轉(zhuǎn)基本數(shù)據(jù)類型的規(guī)律
- JavaScript 中對象獨有的特色
- JavaScript對象分類
- 宿主對象
- 內(nèi)置對象
- 特殊行為對象
為什么開發(fā)中建議使用void 0 來代替undefined
因為 JavaScript 的代碼 undefined 是一個變量,而并非是一個關鍵字,這是JavaScript 語言公認的設計失誤之一,所以,我們?yōu)榱吮苊鉄o意中被篡改,我建議使用void 0 來獲取 undefined 值。
MDN上的解釋: undefined
is a property of the global object. That is, it is a variable in global scope. The initial value of undefined
is the primitive value undefined
。
為什么開發(fā)中將未賦值的變量賦值為null,而不是undefined
null 表示的是:“定義了但是為空”。所以,在實際編程時,我們一般不會把變量賦值為 undefined,這樣可以保證所有值為 undefined 的變量,都是從未賦值的自然狀態(tài)。
String類型的長度
因為 String 的意義并非“字符串”,而是字符串的 UTF16 編碼,我們字符串的操作charAt、charCodeAt、length 等方法針對的都是 UTF16 編碼。所以,字符串的最大長度,實際上是受字符串的編碼長度影響的。
JavaScript 中的字符串是永遠無法變更的,一旦字符串構(gòu)造出來,無法用任何方式改變字符串的內(nèi)容,所以字符串具有值類型的特征。
JavaScript 字符串把每個 UTF16 單元當作一個字符來處理,所以處理非 BMP(超出U+0000 - U+FFFF 范圍)的字符時,你應該格外小心。
"\uD835\uDD46" // "
