==
比較,它會自動轉換數據類型再比較,不少時候,會獲得很是詭異的結果;javascript
===
比較,它不會自動轉換數據類型,若是數據類型不一致,返回false
,若是一致,再比較java因爲JavaScript這個設計缺陷,最好不要使用
==
比較,始終堅持使用===
比較。ruby
NaN
這個特殊的Number與全部其餘值都不相等,包括它本身:函數NaN === NaN; // falsespa
惟一能判斷
設計NaN
的方法是經過isNaN()
函數:
isNaN(NaN); // true
code
null
表示一個「空」的值,它和0
以及空字符串''
不一樣,0
是一個數值,''
表示長度爲0的字符串,而null
表示「空」。regexp
undefined
,它表示「未定義」。JavaScript的設計者但願用null
表示一個空的值,而undefined
表示值未定義。事實證實,這並無什麼卵用,區分二者的意義不大。大多數狀況下,咱們都應該用null
。undefined
僅僅在判斷函數參數是否傳遞的狀況下有用。ip
轉義字符
\
能夠轉義不少字符,好比\n
表示換行,\t
表示製表符,字符\
自己也要轉義,因此\\
表示的字符就是\
。字符串ASCII字符能夠以
\x##
形式的十六進制表示
因爲多行字符串用
\n
寫起來比較費事,因此最新的ES6標準新增了一種多行字符串的表示方法,用反引號 ` · ` 表示,反引號在鍵盤的ESC下方,數字鍵1的左邊。
var name = '小明'; var age = 20; var message = '你好, ' + name + ', 你今年' + age + '歲了!';
也能夠:var message = `你好, ${name}, 你今年${age}歲了!`;
null
、undefined
、0
、NaN
和空字符串''
視爲false
,其餘值一律視爲true
,所以上述代碼條件判斷的結果是true
。