簡體   English   中英

JavaScript中[]表示法中的對象文字

[英]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.

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