- 使用
/* */
作爲註釋是不安全的,如果註釋當中有正則,會用到/**/
相關的字符,所以不建議使用/* */
,只使用//
註釋即可。 - JavaScript不允許在對象字面量中,或者用點運算符提取對象屬性時,使用保留字作爲對象的屬性名。
- JavaScript數字只有一種數據類型,像Java的double一樣,是64位浮點數。
- NaN是一個數值,但不等於任何值(包括自己),可以用
isNaN()
來檢測 - 一共有三種方式定義全局變量:
- 第一種是在任何函數之外放置一個
var
語句 - 第二種是直接給全局對象添加一個屬性。在Web瀏覽器裏,全局對象名爲
window
:window.foo = value
。 - 第三種是直接使用未聲明的變量(隱式全局變量),這種方式並不推薦,以爲雖然不會報致命錯誤,但是一旦出bug排查起來是非常困難的。
- 第一種是在任何函數之外放置一個
- 請注意
==
和===
的區別,前者會轉換類型。
'' == '0' // false
'0' == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
'\t\r\n' == 0 // true
- JavaScript有自動修復機制,使得當你不寫分號
;
的時候也能正常使用程序,但是正是這種自動補全分號的行爲使得一些編寫不規範的代碼容易出錯:
//返回undefined
return
{
status: true
};
//正常返回
return {
status: true
}
- 有很多並沒有使用的詞被保留作關鍵詞,所以使用變量時要儘量避免使用這些詞,如果使用,那麼在訪問的時候要書寫規範,比如加引號,以下是保留詞(JS關鍵詞):
abstract, boolean, break, byte, case, catch, class, const, continue, debugger, default, delete, do, double, else, enum, export, extends, false, final, finally, float, for, function, goto, if, implements, import, in, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, throw, throws, transient, true, try, typeof, var, volatile, void, while, with
- typeof用於識別數字時返回
'number'
,但是typeof識別null
時返回'object'
,於是它不能分辨null
和對象
//typeof & undefined
typeof null // object (因爲一些以前的原因而不是'null')
typeof undefined // undefined
null === undefined // false
null == undefined // true
null === null // true
null == null // true
!null //true
isNaN(1 + null) // false
isNaN(1 + undefined) // true
parseInt()
可不是一個好函數,不光是轉換數字的時候遇到非數字就停止不轉了,還會把0
開頭的當做八進制來處理,八進制沒有8和9,導致parseInt("08")
和parseInt("09")
都會返回0,但是後面可以加參數來確定到底是幾進制,但是很不喜歡這個函數。- 數組,原始類型中沒有數組,它屬於對象的一種,這時候要科普一下基本數據類型了:
兩個你不想見到的類型:null
和undefined
,兩個最常用的類型number
和string
,一個boolean
類型,一個新出的symbol
類型,剩下的,全是對象類型(包括標準的對象,數組,日期,Json等等,見https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures)。但是你不要說JavaScript裏什麼都是對象,因爲什麼都可以括號括起來然後.
什麼什麼的它就是對象,數字和字符串之所以可以後面跟.
什麼什麼,是因爲在JavaScript裏數字和字符串是“有屬性”的,具體參見剛纔的文檔。 - 假值:在JavaScript裏能判定爲假的還真不少,有:
0, NaN, '', false, null, undefined
但是你不能用==
來判斷其中兩個不同的東西能給你返回true
。