var @foo = 'bar'; // SyntaxError: missing variable name. { '@foo' : 'bar' }; // SyntaxError: invalid label. var obj = { '@foo' : 'bar' }; obj.@foo; // TypeError: can't convert AttributeName to string var obj = { '@foo' : 'bar' }; obj['@foo']; // "bar"
Quelqu'un peut-il m'expliquer pourquoi le symbole '@' n'est pas autorisé à être utilisé dans des noms de variables et à quoi je devrais l'utiliser?
Il n'est pas réservé ou spécial, ce n'est tout simplement pas un identifiant javascript valide. Pour la même raison, cela fonctionne:
var obj = { 'foo-baz' : 'bar' }; obj['foo-baz'];
Et cela ne fonctionne pas:
var obj = { 'foo-baz' : 'bar' }; obj.foo-baz;
Les identifiants javascript valides doivent commencer par une lettre ou $
, et ne peuvent contenir que des lettres, des chiffres, $
et _
. Toute autre chose dans un nom de propriété vous obligera à utiliser la notation de bracket.
Question posée .