【问题标题】:Syntax error in object property assignment对象属性分配中的语法错误
【发布时间】:2021-12-07 02:48:09
【问题描述】:

Code Academy 说有两种方法可以在 JavaScript 中创建对象。

1.对象字面量表示法

var myObject = {     
    key: value,     
    key: value,    
    key: value 
};

2。对象构造方法

var myObject = new Object();

然后可以添加键:

myObj["name"] = "Charlie"; 
myObj.name = "Charlie"; //shorthand for the first

被要求创建 3 个对象时,我尝试了不同的方法来生成具有相同值的对象,但使用上面提供的模板时出现错误。我的代码粘贴在下面:

var object1 = {
    1: 2,
    7: 3,
    4: 5
};

var object2 = new Object();
object2['1'] = 2;
object2['7'] = 3;
object2['4'] = 5;

var object3 = new Object();
object3.1 = 2;
object3.7 = 3;
object3.4 = 5;

Code Academy 给了我一个错误,为了弄清楚它到底在哪里,我使用了 Chrome 的控制台。在 Chrome 的控制台上分别绑定每个对象创建,object1object2 可以创建,但不能创建 object3,这会产生错误:Uncaught SyntaxError: Unexpected number

object3的代码更改为(将键从数字更改为字符串):

var object3 = new Object();
object3.'1' = 2;
object3.'7' = 3;
object3.'4' = 5;

产生错误:Uncaught SyntaxError: Unexpected string

是否可以使用此模板/布局创建object3 以生成object1 的值,或者键永远不能是数字或字符串?用于创建 object2 的密钥的字符串而非数字。

【问题讨论】:

  • 属性名称不能使用“点”语法以数字开头。 object3._1 可以,但是因为下划线(以及 $ 和字母字符)是合法的语法。

标签: javascript object properties


【解决方案1】:

使用点符号时,键的命名方式应与变量相同(以字母或_开头,仅包含字母、数字和_) .

如果密钥不能用作点表示法,则可以使用 方括号表示法,如下所示:

obj["key goes here"];

由于174 对点表示法无效,因此将它们用作键的唯一方法是:obj["4"] ...

这是一个关于对象基础知识的MDN page

示例:

这些键对点表示法有效:

abc;
_a;
R2D2;
_;
_0;
a________a;

不是:

k-ey;
a b a;
99;
k.e.y;
@@;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2021-09-06
    • 2018-06-15
    • 1970-01-01
    相关资源
    最近更新 更多