javascript - javascript 中 [] 表示法中的对象字面量

标签 javascript javascript-objects

我有两个例子。在第一个示例中:

a. 
    1. var object = {1 : "value"};

       alert(object[1]);

    2. var object = {1 : "value"};

       alert(object["1"]);

在这两个示例中,输出都是“value”。我在书中读到 object[1] 将找到一个变量 1 并用它替换该值。 由于 1 不能在 javascript (var 1="some var"//not allowed) 中声明为变量名,是否只是 alert(object[1]) 尝试找到声明的字符串 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";

我只是想知道a. 和 a. 之间的区别。 1 和 a.2 以及我对这些示例的理解是否正确?

最佳答案

In both of the examples , the output is "value". I read in the books that object[1] will find a variable 1 and substitute the value with that.

没有。它需要一个字符串。

如果您向其传递数字文字,它会将数字转换为字符串。

如果您向其传递字符串文字,它将使用该字符串文字作为字符串。

如果您向它传递一个变量,那么它会获取该变量的值,并将其转换为字符串(如果它还不是字符串)。

1 不是变量名。 JavaScript 的语法要求将其视为数字文字。

I am just curious to know the difference between a. 1 and 2

在情况 1 中,您传递的是数字文字。在情况 2 中,您传递了一个未声明的变量。当您尝试从未声明的变量中获取值时,您会收到 ReferenceError。

在任何其他情况下,如果你做一些有值(value)的事情,你都会得到同样的效果。

var foo = 1; // Assigns 1
var foo = bar; // Throws a reference error because bar is undeclared

关于javascript - javascript 中 [] 表示法中的对象字面量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39346364/

相关文章:

php - 如何在上传到服务器之前预处理本地 CSV 文件?

javascript - Reactjs @setState 具有动态键值

javascript - JS 函数调用链中丢失上下文

javascript - 获取输入 URL 到 img src

javascript - D3更新模式两次绘制相同的元素

javascript - 没有目标 ="blank"?

javascript - JSON 和 Highcharts

javascript - 如何从异步回调函数返回值?

javascript - 如何遍历对象文字数组,连接共享重复 id 的值?

javascript - 如果没有 getElement 方法,代码的简写如何工作?有人可以解释并详细说明这个类比吗