2015-05-03 90 views
4

我知道JS嚴格等號評估兩件事情: 平等和樣typednessJavaScript的怪誕 - typeof運算[] ===的typeof {}計算結果爲 '真'

Object.is()是最接近的比較我可以找到進一步的見解,並且在我的調查中沒有提供進一步的信息。

任何人都可以更好地解釋JS的內臟?數組是一個非常奇怪的對象實現嗎?所以他們是空的,並在這裏評估相同?

我很困惑,只是好奇。

+0

呃'typeof 0 === typeof 3'。所以呢? – Bergi

+0

數組是對象(對整型屬性和特殊的'.length'屬性進行優化訪問) – Bergi

+1

'typeof'只是一個查找表。見http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.3。另一塊是所有不是原始值(數字,字符串,布爾值,空值,未定義)的對象。 –

回答

3

typeof返回操作數的原始類型。除了bools,數字,字符串,函數和未定義的東西外,這是對象。

+1

雖然函數不是一種類型。 'typeof'很奇怪 – vkurchatkin

+0

@vkurchatkin我的意思是,你可以試試看:'typeof function(){} ===「function」' –

+0

是的,沒錯,但它不是一種類型。函數的實際類型是「對象」。 – vkurchatkin

2

數組是有一些附加的方法的對象 - MDN將它們定義爲「高層次,表狀物體」,並接着說:

數組是列表狀物體,其原型具有執行遍歷和變異操作的方法。

相關問題