Allow reserved words for properties?
See original GitHub issueUnder Objects it says you shouldn’t use reserved words. I’m not sure this is important, though avoiding them might make sense for readability. At least using klass
instead of class
would seem wrong to me, as you are corrupting a word instead of finding a readable synonym (like type
).
Right now you can use just about anything. E.g., test = {function: 1}; test.function === 1
–but additionally I think we can be confident this will continue to be the case. IndexedDB uses the method cursor.continue()
which isn’t just a future-protected reserved word (like class
) but a reserved word right now. But IndexedDB represents current API design by people involved in the standardization process.
I think it’s questionable from a readability point of view to use current keywords, but I don’t see any reason at all to avoid words reserved for possible future use (class
and private
, as used in the example, are both examples of that).
Issue Analytics
- State:
- Created 11 years ago
- Comments:5 (1 by maintainers)
Top GitHub Comments
Note that this isn’t an “IE bug”. It’s not supported in old IE because IE’s JScript engine correctly follows the ECMAScript 3 specification in this regard; which explicitly defines
PropertyName
as anIdentifier
, which is “anIdentifierName
that is not aReservedWord
”.This was not by design, but at the time merely to document the status quo of different browsers and to ensure consistency. Other browser’s engines had this behaviour as well.
Since property names leave no ambiguity with other operators, this useless restriction was removed in ES5 where
PropertyName
has been redefined as a plainIdentifierName
(https://es5.github.io/#x11.1.5). ES5 is still relatively new (not unlike CSS3 and HTML5) and first implemented in IE10 (almost in IE9), Firefox 4, Safari 6 and Chrome 19.I’d recommend using something like JSHint (and set option
es3: true
), and also use it in your editor, to automatically catch these (and other things) ahead of time.Yeah this can be updated.