首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用变量、点和括号表示法中存储的属性名称。

使用变量、点和括号表示法中存储的属性名称。
EN

Stack Overflow用户
提问于 2014-11-17 18:33:17
回答 2查看 333关注 0票数 0

我对JS中的括号和点表示法提出了挑战,我或多或少地理解了它的工作原理,但我不能用一点来说明:

为什么不能使用属性名存储在变量中的Dot表示法?

这一点尚不明确:

代码语言:javascript
复制
var car = {
seats: "cloth",
engine: "V-6"
};
var s = "seats";
function show_seat_type(sts) {
window.alert(car.sts); // undefined
}
show_seat_type(s);

这样就好了

代码语言:javascript
复制
var car = {
seats: "cloth",
engine: "V-6"
};
var s = "seats";
function show_seat_type(sts) {
window.alert(car[sts]); // works
}
show_seat_type(s);

但是为什么呢?谢谢你们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-17 18:46:10

通过使用点表示法,您可以向解释器指示您知道的car有一个名为"sts“的属性。它并没有试图解决这个问题。如果你有一个对象

代码语言:javascript
复制
var car = {
seats: "cloth",
sts : "foo",
engine: "V-6"
};

您的点符号代码可以工作,但返回字符串"foo“。

或者,通过使用括号内的表示法,解释器需要一个字符串,因此它接收到的任何变量都将解析为字符串。既然你知道了,就考虑这个吧。你希望这些电话中的任何一个都能表现出来吗?

代码语言:javascript
复制
car."sts"
car["sts"]

第一个调用错误退出,第二个错误返回"foo“。希望这说明了这两种变量引用方法之间的区别。

票数 0
EN

Stack Overflow用户

发布于 2014-11-17 19:49:19

点表示法是首选,JS指针警告使用括号表示法。

括号符号的使用应该保留给动态属性名称,就像在(第二个)示例中一样。

回答你的问题:

car.stscar["sts"]相同

所以

car[sts]cat.<the value of sts>相同

代码语言:javascript
复制
var sts = "seats";
car[sts]; // equal to car.seats

使用点表示法,属性名必须是有效标识符,而对于brack表示法,它可以是任何字符串,甚至是空字符串''

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26979466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档