上一篇文章中有提到過typeof,可是講的比較粗略,歸納以下:瀏覽器
如今須要歸納一下注意點,以下:
一、值和類型安全
js中只有值纔有類型,變量沒有類型。js不作「類型強制」,也就是說,語言引擎不要求變量老是持有與其初始值同類型的值。一個變量能夠如今被賦值爲字符串類型值,隨後又被賦值爲數字類型值。 執行typeof操做,獲得的結果不是該變量的類型,而是該變量持有的值的類型,由於js中的變量沒有類型。
二、undefined和undeclaredspa
變量在未持有值的時候爲undefined,此時typeof返回undefined; 尚未在做用域中聲明過的變量,此時typeoof返回的也是undefined。
瀏覽器對沒有聲明過的變量進行處理過程並非很好,‘b is not defined’容易讓人誤覺得是‘b is undefined’。強調一下,‘undefined’和‘is not defined’是兩碼事。 而typeof處理undeclared變量的方式則是更讓人鬱悶:
對於undeclared(或者not defined)變量,typeof照樣返回‘undefined’。還須要注意的是,雖然b是一個undeclared變量,但typeof b並無報錯,這是由於typeof有一個特殊的安全防範機制。