javascript区分破折号吗?
当我使用test.tested-by时,javascript reports-by是未定义的。我确信测试包含按属性测试。这里有什么解决办法吗 尝试改用javascript区分破折号吗?,javascript,jquery,Javascript,Jquery,当我使用test.tested-by时,javascript reports-by是未定义的。我确信测试包含按属性测试。这里有什么解决办法吗 尝试改用test['tested-by']。tested by看起来像tested-by您需要使用: test["tested-by"] 通过这种方式,您可以提供任何属性名称,甚至保留关键字(如“类”)。请参见此处的另一个问题: 基本上,a-在javascript中不是有效的变量字符 -字符也是无效的标识名字符,这意味着您不能使用点符号测试。测试人不访问
test['tested-by']
。tested by看起来像tested-by您需要使用:
test["tested-by"]
通过这种方式,您可以提供任何属性名称,甚至保留关键字(如“类”)。请参见此处的另一个问题: 基本上,a-在javascript中不是有效的变量字符
-
字符也是无效的标识名
字符,这意味着您不能使用点符号<代码>测试。测试人不访问属性测试人。(您可以使用test['tested-by']
)最佳做法通常是避免它。我更喜欢
语法,但这是正确的。请参见和:)这与变量名无关,而与属性名有关。规则相似但不完全相同:从该站点:点表示法只能在属性名称是有效标识符名称时使用。
这就是您在问题中试图做的。不是我的问题(我不是OP)。无论如何,JavaScript中的变量名是Identifier
s,而不是IdentifierName
s(适用于属性名的语法)。你把这两个搞混了<代码>标识符s是不属于ReservedWord
s的标识符名称
s。例如,var-default
抛出一个SyntaxError
,而var对象={default:42}代码>符合规范要求。有关更多信息,请参阅。换句话说,你的答案是正确的,但它不是OP问题的答案。或者它确实回答了问题,但使用了不正确的术语,这可能会让人困惑。因此,我更新了我的答案。请参见和:)