繁体   English   中英

javascript 属性名称中是否允许使用破折号?

[英]Are dashes allowed in javascript property names?

我正在查看http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options为 jQuery 创建一个简单的插件。 按照有关选项和设置的部分,我做了以下操作,但不起作用(脚本在遇到设置时退出)。

var settings = {
    'location' : 'top',
    'background-color': 'blue'
}
...
$this.css('backgroundColor', settings.background-color); // fails here

从背景颜色中删除破折号后,一切正常。

var settings = {
    'location' : 'top',
    'backgroundColor': 'blue' // dash removed here
}
...
$this.css('backgroundColor', settings.backgroundColor); 

我错过了什么,还是 jQuery 文档错了?

不。 解析器将其解释为减法运算符。

你可以做settings['background-color']

settings.background-color更改为settings['background-color']

变量不能包含-因为它被读取为减法运算符。

破折号在 javascript 变量中是不合法的。 变量名必须以字母、美元符号或下划线开头,后跟相同或数字。

你可以这样做:

 var myObject = { propertyOne: 'Something', 'property-two': 'Something two' } for (const val of [ myObject.propertyOne, myObject['propertyOne'], myObject['property-two'] ]){ console.log(val) }

您可以在字符串中使用破折号。 如果你真的想保留那个破折号,你必须使用括号和诸如此类的东西来引用属性:

$this.css('backgroundColor', settings['background-color']);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM