靜態語言/動態語言:變數和型別的綁定方法。 弱型別/強型別:語言型別系統(Type System)對型別檢查的嚴格程度,也就是型別安全的程度。
==
、===
"123456"
的結果。999
:111 + 222
被視為算術運算做相加,得到數字 333
;繼續和中間的字串 "333"
相加,被視為字串的串連,得到 "333333"
;而最後的 111
和 222
雖然是數字型態,都被以字串相接的方式處理,以至於得到 "333333111222"
這麼滑稽的答案。111
、222
,JavaScript 連自己前後處理的方式都不一樣?+
來表達,事實上他們是不同的運算子:+
視為算數運算子還是串接運算子?+
左右兩邊的運算元有任何一個型別是字串,就會被當作串接運算子,否則就是算數運算子。var x = v1 + v2;
這行程式本身,我們無法判斷 JavaScript 會將 +
當成算數運算子還是串接運算子,因為變數 v1
、v2
有可能是任何型別。.
:null
是個 object」的弔詭現象。null
的概念在各種程式語言很普遍,代表「nothing」,也就是這個變數裡面沒有值。typeof
去取得其型別,卻會回傳 "object"
的結果。You can consider it a bug in JavaScript that typeof null is an object. It should be null.
null
型別,還有另一個特別的型別:undefined
。undefined
在概念上和使用上都非常類似 null
,但在 JavaScript 的型別系統中他們又確確實實屬於不同的型別。null
型別,undefined
更接近其他語言對 NULL
的習慣。undefined
而不是 null
)null
就顯得很雞肋(而且是有 Bug 的雞肋...),徒增混淆。