的[] [[]]結果是未定義 其中,因爲這[[]] []拋出語法錯誤:意外標記]。 任何解釋?JavaScript中[] [[]]和[[]] []之間的區別?
回答
的object[key]
語法用於獲得object
的屬性key
,其中必須有key
裏面[]
否則會出現語法錯誤。
[][[]]
,對象是一個空數組[]
,關鍵是另一個空數組[]
。
[[]][]
,該對象是一個內部有一個空數組的數組,而[]
內部沒有鍵。
[]
定義了一個空數組,所以[][[]]
可以改寫爲:
var a = [];
var b = [];
var c = a[b];
現在,通過指數索引本身是一個數組是未定義訪問數組 - 標準不說會發生什麼,但它在語法上是有效的。
但是[[]][]
被打破 - 最近這可寫草書是:
var a = [];
var b = [];
[b]a;
...這完全是無稽之談代碼。
我不明白爲什麼有人會曾經想用這樣的事情,但這裏是一個解釋:
案例1:
[]
是一個空數組。通過向其添加[n]
([][n]
),您引用第n個元素。 n你的情況是[]
。解釋器試圖將其轉換爲可用值並以空字符串(「」)結尾。所以你實際上試圖參考[][""]
這是undefined。
情況2:
[[]]
爲空數組內的空數組。通過將[n]
添加到它([[]][n]
),您可以引用外部數組的第n個元素。你需要提供索引n,否則會拋出一個錯誤,這發生在你的情況。
我無法想象,你爲什麼會需要使用這一點,但這裏是我的解釋:
[[]]爲新的Array(新陣列()),這是一個元素的數組,一個空陣列。
[]是一個空數組,所以你可以做[] [2]或[] [0],它返回undefined。第二個[]是索引。
所以在[] [[]]中您正在尋找一個索引,索引[]。
[][0] == [][[]]
但在[[]] []的索引是空的,就相當於[1,2,3] [] - >的SyntaxError:意外的令牌]
好的。只需要使用一個鍵訪問數組。否則會拋出語法錯誤。
[][[]]
- 已定義數組,您正在訪問未定義數組中的密鑰[]
。
[[]][]
- 已定義數組並且未傳遞任何鍵來訪問該數組 - 語法錯誤。
我想類型轉換髮生:儘管在該圖案[[]][]
兩個陣列被聲明並排
[][+[]] // +[] gives 0
:
[][
// an index is expected here
[] // so javascript probably tries to get a number from this empty array
]
這可能是相當於。
JavaScript對象具有與其關聯的屬性。您可以用簡單的點符號或括號表示法訪問對象的屬性,如果引用non existing key
,則它給出undefined
值。
var obj = {};
obj[ 'key' ]
,一個重要的事情是,在JavaScript中數組是一個對象
console.log([] instanceof Object) // gives true so it act like object
和有趣的事情是,我們通過象下面這樣。
var keyCanbeFunction = function(){};
var keyCanbeObject = {};
var keyCanbeArray = [] ;
console.log(obj[ keyCanbeArray ]) // gives undefined, that key not exists
和1次的情況下:
var obj = [];
obj[ keyCanbeArray ] // gives undefined
和第二種情況:
var obj = [[ ]]
obj[]; // where is key ???
- 1. javascript中的/ * * /和//之間的區別
- 2. Javascript + HTML - 「'和」之間的區別「
- 3. Javascript ES6。 ===和Object.is之間的區別
- 4. window []和eval()之間的區別 - Javascript
- 5. javascript .childNodes和.children之間的區別
- 6. ECMAScript6和JavaScript之間的區別
- 7. Javascript「Math.sin」和WebGL「sin」之間的區別
- 8. 對象之間的區別(javascript和jquery)
- 9. 之間的〜/和的區別../
- 10. {!!之間的區別!!}和{{}}
- 11. fmod和%之間的區別
- 12. 「?1」和「?」之間的區別
- 13. 「%〜dp0」和「。\」之間的區別?
- 14. | =和^ = css之間的區別
- 15. .eq之間的區別。和==
- 16. '#','%'和'$'之間的區別
- 17. '+ ='和'= +'之間的區別?
- 18. 「。+」和「。+?」之間的區別
- 19. #。/和#之間的區別。 ./
- 20. !=和!之間的區別==
- 21. 之間的區別。和#
- 22. ==和case之間的區別?
- 23. 「**/* /」和「** /」之間的區別?
- 24. jQuery - '。'之間的區別和「#」
- 25. `%in%`和`==`之間的區別
- 26. 之間的區別:+和:+
- 27. JavaScript FileReader中的readAsDataURL()和readAsArrayBuffer()和readAsText()之間的區別
- 28. 類區域和堆之間的區別
- 29. SPFile和PublishingPage類別之間的區別
- 30. make中的「$(shell ...)」和「$$(...)」之間的區別
BTW,爲什麼你需要定義這樣的事情? – Kaf
你試過了嗎?什麼是?它是一個包含一個項目的數組(一個空數組)。然後[[]] []會得到它的第一個元素,但是你需要提供一個INDEX(這就是爲什麼語法錯誤,它解析「]」而不是數字)。 –
'([])['array object somekey,ie []']'給出undefined ..和'([[]])[]'表示沒有鍵'拋出'SyntaxError:syntax error' – rab