2017-02-18 116 views
1

數字1是否隱式轉換爲空數組?爲什麼1 [1]評估爲在javascript中未定義?

> a = 1[1] 
undefined 
> console.log(a) 
undefined 
undefined 
+0

'1'是個'Number' – hackerrdave

+0

,因爲Number沒有屬性'1'。 (1)[1]'與[(新數字(1))[1]'相同' – Thomas

+1

與[爲什麼'0 [0]'語法有效?]( http://stackoverflow.com/questions/29250950/why-is-00-syntactically-valid/29251025#29251025) – jfriend00

回答

4

是數字1投隱含一個空數組?

號數值是隱式地(並且暫時)轉換爲數字對象和屬性1被該對象上訪問。

括號符號您使用([1])不是特定於陣列,每對象屬性可以通過托架符號來訪問。即以下兩個是等效的:obj.foo(點符號)和obj['foo'](括號表示法)。

數量的對象但沒有財產1和訪問一個不存在的屬性返回undefined

var numObj = new Number(1); 
 
console.log(numObj[1]);


的隱式轉換髮生的每訪問一個時間財產原始值,財產是否存在或不是。在以下示例中,原始數值也被隱式轉換爲一個對象,然後執行它的toFixed方法:

var num = 42; 
 
console.log(num.toFixed(2)); 
 
// or equivalently to your example: 
 
console.log(42['toFixed'](2))

數字,字符串,布爾和符號具有對象當量。空和未定義不。

相關問題