Os traços são permitidos em nomes de propriedade de javascript?

Eu estava olhando para http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options para criar um plugin simples para jQuery. Seguindo a seção sobre opções e configurações, fiz o seguinte, que não funcionou (o script foi encerrado quando encontrou a configuração).

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

Depois que eu removi o traço da cor do plano de fundo, as coisas funcionam corretamente.

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

Estou faltando alguma coisa, ou os documentos do jQuery estão errados?

não. o analisador irá interpretá-lo como o operador de subtração.

você pode fazer settings['background-color'] .

Altere settings.background-color para settings['background-color'] .

Variáveis ​​não podem conter - porque isso é lido como o operador subtrair.

Os traços não são legais em variables ​​javascript. Um nome de variável deve começar com uma letra, cifrão ou sublinhado e pode ser seguido pelo mesmo ou por um número.

Você pode ter traços em strings. Se você realmente quisesse manter esse traço, teria que se referir à propriedade usando colchetes e outros enfeites:

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