2013-01-21 20 views
8
var @foo = 'bar'; 
// SyntaxError: missing variable name. 

{ '@foo' : 'bar' }; 
// SyntaxError: invalid label. 

var obj = { '@foo' : 'bar' }; 
[email protected]; 
// TypeError: can't convert AttributeName to string 

var obj = { '@foo' : 'bar' }; 
obj['@foo']; 
// "bar" 

Qualcuno può spiegare a me perché il simbolo '@' non è consentito per essere utilizzato in nomi di variabili e quello che dovrebbe essere utilizzato per?Perché il simbolo '@' è riservato in javascript e qual è il suo scopo?

+0

è utilizzato in e4x qualche speciale tipo di sintassi per attraversare xml – philipp

+0

Così come non è possibile usare '#', ''o' "o'. È sintassi non valida per i nomi delle variabili. – VisioN

+0

possibile duplicato di [ Una domanda sul nome della proprietà dell'oggetto JavaScript] (http://stackoverflow.com/questions/5006049/a-question-about-javascript-object-property-name) – jbabey

risposta

7

Non è riservato o speciale, non è un carattere identificativo javascript valido. Per lo stesso motivo per cui funziona:

var obj = { 'foo-baz' : 'bar' }; 
obj['foo-baz']; 

E questo non lo fa:

var obj = { 'foo-baz' : 'bar' }; 
obj.foo-baz; 

validi identificatori JavaScript deve iniziare con una lettera o $, e possono contenere solo lettere, numeri, $ e _. Qualunque altra cosa nel nome di una proprietà ti costringerà ad usare la notazione della parentesi.

Related question.

+0

Ok, questo ha un senso.Tuttavia, so che il '- Il simbolo "sottrae". Cosa significa '@' do? – idbehold

+1

@ideale che non ha nulla a che fare con ciò che fa il simbolo ('@' non ha alcun significato speciale in javascript, se sei curioso) - secondo la [specifica] (http : //ecma262-5.com/ELS5_HTML.htm#Section_11.1.5), le chiavi oggetto devono essere letterali stringa, valori letterali numerici o nomi identificativi poiché '@', '-', ecc. non sono consentiti nei nomi identificativi , devono essere racchiusi tra virgolette per diventare string lite RAL. – jbabey

+0

Grazie, signore. Spiegazione perfetta – idbehold

Problemi correlati