javascript区分破折号吗?

问题描述:

当我使用test.tested-by时,javascript报告-by是未定义的。我相信测试包含被测物性。任何解决方案?javascript区分破折号吗?

+0

请参阅http://mathiasbynens.be/notes/javascript-properties和http://mothereff.in/js-properties#tested-by :) – 2012-07-29 07:45:59

尝试使用test['tested-by']来代替。经测试通过的模样测试减去

+0

最佳做法通常是避免它。我更喜欢'.'语法,但这是正确的。 – tjameson 2011-05-24 06:32:59

+0

请参阅http://mathiasbynens.be/notes/javascript-properties和http://mothereff.in/js-properties#tested-by :) – 2012-07-29 07:45:33

您需要使用:

test["tested-by"] 

这种方式可以提供任何属性的名称,甚至保留关键字(如“类”)。

在这里看到另一个问题:What characters are valid for JavaScript variable names?

基本上, - 是不是在JavaScript中有效的变量字符。

-字符也不是有效的IdentifierName字符,这意味着您不能使用点符号。 test.tested-by不访问属性tested-by。 (您可以使用test['tested-by']。)

+0

这与变量名称无关,而与属性名称无关。规则是相似的,但不完全一样:http://mathiasbynens.be/notes/javascript-properties – 2012-07-29 07:45:07

+0

从该网站:'点符号只能用于当属性名称是一个有效的标识符名称.'这就是你正试图在你的问题上做。 – Arjan 2012-07-29 07:57:15

+0

不是我的问题(我不是OP)。无论如何,JavaScript中的变量名称是“标识符”,而不是“标识符名称”(这是适用于属性名称的语法)。你混淆了两者。 “标识符”是不是“保留字”的“标识符名称”。例如,'var default;'抛出一个'SyntaxError',而'var object = {default:42};'根据规范罚款。有关更多信息,请参阅http://mathiasbynens.be/notes/javascript-identifiers。换句话说,你的回答是正确的,但这不是OP问题的答案。 – 2012-07-29 20:36:22