[] 表示法中的对象字面量 javascript
Object literals in [] notation in javascript
我有两个例子。在第一个例子中:
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 之间的区别。 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。
在任何其他情况下,如果您正在做一些有价值的事情,您将获得相同的效果。
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
恰好是一个变量,当在对象字面量中这样使用时,它也只是表示字符串 "a"
而与变量无关。
var key = "hmm";
var object = {key: "value"}; // object is now {"key": "value"}
如果你想让变量的值为属性,你可以在现代浏览器中使用下面的ES6语法:
object = {[key]: "value"}; // object is now {"hmm": "value"}
另一件事是昆汀说的;当你用对象 [x] 查找 属性 的值时,无论 x 是什么都将被转换为字符串。
我有两个例子。在第一个例子中:
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 之间的区别。 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。
在任何其他情况下,如果您正在做一些有价值的事情,您将获得相同的效果。
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
恰好是一个变量,当在对象字面量中这样使用时,它也只是表示字符串 "a"
而与变量无关。
var key = "hmm";
var object = {key: "value"}; // object is now {"key": "value"}
如果你想让变量的值为属性,你可以在现代浏览器中使用下面的ES6语法:
object = {[key]: "value"}; // object is now {"hmm": "value"}
另一件事是昆汀说的;当你用对象 [x] 查找 属性 的值时,无论 x 是什么都将被转换为字符串。