Using reserved words as property names, revisited

后端 未结 4 1265
臣服心动
臣服心动 2020-11-28 09:27

Can a reserved word be used as an object\'s property name?

This issue was raised indirectly in a previous Stack Overflow question: Browser support for using a reserv

相关标签:
4条回答
  • 2020-11-28 10:04

    Yes, it can be used.

    Just small remark, if you use YUI compressor you have to put property name which is equal to one of js reserved words in quotes.

    For example, this won't compress

    var a = { case : "foo"}; // syntax error, "invalid property id"
    a.for = "bar"; // syntax error, "missing name after . operator"
    

    This will do

    var a = { "case" : "foo"}; //OK
    a["for"] = "bar"; //OK
    

    Here is Online JavaScript/CSS Compression Using YUI Compressor where this can be tested.

    0 讨论(0)
  • 2020-11-28 10:12

    Yes, in most browsers (including IE9+)

    There's actually an entry in the Kangax compatibility table for "Reserved words as property names"

    http://kangax.github.io/compat-table/es5/#test-Object/array_literal_extensions_Reserved_words_as_property_names

    0 讨论(0)
  • 2020-11-28 10:24

    I'm not quite sure what the point is you want to make, so the only answer I can give is: Yes, it's ok to use reserved words as property names.

    (However two small remarks: foo["class"] is ok, not foo[class]. And any way you should be using form.elements["xyz"] and not form.xyz to access an element named xyz.)

    0 讨论(0)
  • 2020-11-28 10:26

    In ECMAScript, starting from ES5, reserved words may be used as object property names "in the buff". This means that they don't need to be "clothed" in quotes when defining object literals, and they can be dereferenced (for accessing, assigning, and deleting) on objects without having to use square bracket indexing notation.

    That said, reserved words may still NOT be used as identifier names. This is stated quite unambiguously in the spec and is stated somewhat emphatically here (if you don't want your eyes to bleed by having to read the actual language spec)...

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words

    The following are keywords and may not be used as variables, functions, methods, or object identifiers, because ECMAScript specifies special behavior for them:

    0 讨论(0)
提交回复
热议问题