gpt4 book ai didi

javascript - 使用关键字作为对象键会在 Aptana 中引发语法错误

转载 作者:行者123 更新时间:2023-11-29 18:22:45 25 4
gpt4 key购买 nike

我在尝试使用分配给“with”的对象时遇到了 Aptana studio 的问题:

var x = {};
x.with = 12;

这会产生语法错误:意外的标记“with”

代码位于我正在使用的外部库中,因此我不想更改代码,这不会导致 IE 或 Chrome 出现错误。

我试过使用 Preferences > Javascript Syntax Validator 并添加规则,但我在编写正确的表达式时遇到了问题。有谁知道在不忽略其他真正错位的“with”事件的情况下关闭此错误的方法吗?

如有任何建议,我们将不胜感激。

最佳答案

This produces Syntax Error: unexpected token 'with'

那是因为它很长一段时间的语法错误:根据 ES3 规范(1999),这是一个语法错误,并且可能早于此;从 ES5(~2009;没有 ES4)开始,它不再是语法错误,但一些仍在广泛使用的引擎早于该规范并且没有(并且可能不会)更新(例如 IE8) .

with 是关键字。该表达式 (x.with) 是一个属性访问器,特别是一个使用文字属性名称的访问器。 ES3 的定义要求名称是一个标识符标识符是一个术语,规范给出了一个具体的定义:基本上它是一个遵循某些命名规则的名称,而不是一个保留字。所以 with 不能用作标识符。要访问名称为保留字的属性,您必须在字符串中使用方括号表示法:

x["with"] = 12;

从 ES5 开始,文字属性名称 (§11.2.1) 的规则放宽了。 (非常感谢 Felix Kling 指出这一点!)现在,它们必须是IdentifierName,而不是Identifier。区别? IdentifierName 是符合命名规则的东西; IdentifierIdentifierName,它不是保留字。这包含在 §7.6 中.

如果我正在编写一个库,我不会依赖 JavaScript 实现者和工具构建者等普遍正确的东西。

我认为您唯一的办法是使用 Aptana 打开错误报告,并且现在按如下所述修改库。不理想。


关于我之前提到的 [] 符号的更多信息:

x["with"] = 12;

在 JavaScript 中,您可以使用点分符号和文字属性名称 (x.foo) 或使用方括号符号和 string 属性名称 (x["foo"])。当使用文字时,上面讨论的规则适用。但是,当使用字符串 时,您几乎可以做任何您想做的事情(包括空格和其他IdentifierNames 中不允许的字符)。

它也适用于对象初始化器:

var x = {
"with": 12
};

如果我正在编写一个库,或者任何需要在野外运行的代码,我就会使用它。总有一天我们将能够假设 ES5 兼容性,但那一天还没有到来。

关于javascript - 使用关键字作为对象键会在 Aptana 中引发语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16809637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com