Pourquoi le symbole '@' est-il réservé sur javascript et quel est son but?

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 .