沒錯伍纫,我是在說 javascript
顧名思義群凶,typeof(xxx) 應該返回傳入?yún)?shù)的"類型",而在 javascript 中炼彪,只有六種類型 (Undefined, Null, Boolean, Number, String, Object)吐根,但 typeof 并不這么認為
typeof(3.14) // => number
typeof('3.14') // => string
typeof(false) // => boolean
typeof(undefined) // => undefined
typeof({}) // => object
似乎一切正常? But
- 傳入 null 的時候
typeof(null) // => object ??? null 是 object ?
有經(jīng)驗的 js 玩家大都知道這個的坑,所以在諸如判斷對象是個 object 或 array 的時候得這么寫
if(obj && typeof(obj) === 'object' ){//...}
or
if(obj != null && typeof(obj) === 'object' ){//...}
- 傳入 function 的時候
typeof(function Asd(){}) # => function function 并不是六大類型啊
function 的確不是六大類型霹购,不過也沒人規(guī)定 typeof 就必須返回六大類型啊佑惠。(⊙v⊙ 好像是這個道理) 那么
function 和 object 的關(guān)系和區(qū)別在哪里呢? 一句話概括:
function 是可以創(chuàng)造 object 的 object 。 所以齐疙,function 也是 object,
具體兩者的區(qū)別以及 function create 的時候忘記寫 new 的坑看這里旭咽。
媽蛋贞奋,感覺 js 到處是陷阱