[英]Object literals in [] notation in javascript
我有兩個例子。 在第一個示例中:
a.
1. var object = {1 : "value"};
alert(object[1]);
2. var object = {1 : "value"};
alert(object["1"]);
在兩個示例中,輸出均為“值”。 我在書中讀到object [1]將找到一個變量1
並將其替換為值。 由於無法在javascript中將1聲明為變量名(var 1="some var" //not allowed)
,是否只是alert(object[1])
嘗試查找在var object = {1 : "value"};
聲明的字符串var object = {1 : "value"};
並提醒“ value
”。
因為,所以1和2之間沒有區別。示例警報產生的結果相同。
b.
1.
var object = {a : "value"};
alert(object["a"]);
The above example is pretty much clear that it is finding out string "a".
2.
var object = {a : "value"};
alert(object[a]);
上面的例子是一個錯誤,因為我們沒有聲明
var a = "some";
我只是好奇地知道兩者之間的區別。 1和a.2,以及我對這些示例的理解是否正確?
在兩個示例中,輸出均為“值”。 我在書中讀到object [1]將找到一個變量1並將其替換為值。
不。它需要一個字符串。
如果將數字文字傳遞給它,它將數字轉換為字符串。
如果將字符串文字傳遞給它,它將使用字符串文字作為字符串。
如果將變量傳遞給它,則它將獲取該變量的值,如果尚未將其轉換為字符串,則將其轉換為字符串。
1
不是變量名。 JavaScript的語法要求將其視為數字文字。
我只是好奇地知道兩者之間的區別。 1和2
在情況1中,您傳遞的是數字文字。 在情況2中,您傳遞的是未聲明的變量。 當您嘗試從未聲明的變量中獲取值時,會出現ReferenceError。
在任何其他有價值的事情中,您都會得到相同的效果。
var foo = 1; // Assigns 1
var foo = bar; // Throws a reference error because bar is undeclared
發生了兩種不同的情況。
首先,對象鍵始終是字符串,但是在不引起語法問題的情況下,您可以在不帶引號的情況下編寫它們。
{1: "value"}
{a: "value"}
這些是其他寫作方式
{"1": "value"}
{"a": "value"}
即使a
恰好是一個變量,當在對象文字中像這樣使用時,just表示字符串"a"
並且與該變量無關。
var key = "hmm";
var object = {key: "value"}; // object is now {"key": "value"}
如果要將變量的值作為屬性,則可以在現代瀏覽器中使用以下ES6語法:
object = {[key]: "value"}; // object is now {"hmm": "value"}
另一件事是昆汀所說的。 當您使用object [ x ]查找屬性的值時,無論x是什么,都將轉換為字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.