2013-04-17 39 views
0

在JavaScript中,typeof 0給出了'number'而不是'Number',但是instanceof 0 Number內置JavaScript類型名稱的例子

準確地說,內置類型的規範名稱是大寫的,小寫的typeof的返回值是一個奇怪的/不一致的,由於歷史原因無法更改,但如果它改變可能?或者我錯過了什麼?

+1

不知道,但在JavaScript中的慣例是consructors用大寫字母開頭,並且編號是一個構造(或嚴格,是一個功能,可以被稱爲構造函數),因此是大寫字母。請注意'typeof new Number()'返回'object'。 :-) – RobG

回答

1

不,

實際上number是內置值類型,其中Number是一個對象。

如果你說typeof沒有必要臨時轉換0到一個對象。

如果使用instanceof,它會暫時將0轉換爲對象。

這類似於你用繩子做什麼:

"sometest" =>這是一個字符串

但是,如果你會做"sometest".toLowerCase()它會先(暫時)的字符串轉換爲與字符串對象,然後調用該對象的方法(因爲值類型不能有方法)。

總之,小寫意味着價值型,大寫手段反對

+0

那麼,這裏的區別是在對象類型和值類型之間。如果你看4.3.9到4.3.21節,你會發現它們是空類型和空值,布爾類型和布爾值......有點混淆的是,它們在規範中不要使用大寫和小寫。 – Kenneth

+0

雖然一貫使用「數字類型」,但在ES5中不使用小寫「數字類型」。它也一直在僞代碼中使用* Type(x)*。我刪除了先前的評論,因爲它與上下文無關:引用是指規範類型,而不是一般類型。 – RobG

相關問題