簡體   English   中英

在JS數組中使用字符串鍵分配值的方式和方式為何?

[英]How and why does assigning values with string keys work in JS arrays?

參見以下代碼:

 var arr = []; arr.foo = 'bar'; console.log(arr.foo); 

現在,我們看到arr.foo不會引發錯誤並且可以工作,但是從技術上講它應該引發錯誤,所以為什么不這樣做呢?

另外,上述內容如何在內存中表示,考慮到數組塊大多是在連續位置分配了帶有偏移索引的內存,這在這里如何工作?

從技術上講它應該拋出一個錯誤

不,它完全按照規范中的描述工作。

之所以可以使用它,是因為標准的JavaScript數組並不是真正的數組 ,*只是由Array.prototype支持的對象,具有特殊的length屬性和對根據規范作為數組索引的屬性名稱的特殊處理。 具有任何其他名稱的屬性只是普通的對象屬性,而不是數組條目。

由於數組是對象,因此它們可以具有非數組輸入屬性,就像其他任何對象一樣。

FWIW,數組索引的定義是:

整數索引是一個字符串值的屬性鍵,它是規范的數字字符串(請參見7.1.16),其數值為+0或正整數≤2 53 -1。 數組索引整數索引,其數值i在+0≤i <2 32 -1的范圍內。

注意, 類型化數組是真實數組; 但是它們也是對象,您也可以向它們添加非數組輸入屬性。


* (這是我貧乏的小博客上的帖子)

數組是對象,您可以在編寫時將不同種類的對象放入字符串之類的對象中,例如字典,字典,其他一般對象等。

arr.foo="bar"

您正在為名稱訪問foo輸入值“ bar”。 您的變量arr現在是

 arr={foo:"bar"}

你可以,如果你想從這里W3C的更多信息檢查TE頁像你這樣arr.foo訪問https://www.w3schools.com/js/js_arrays.asp在部分數組對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM