JavaScript allows duplicate property names in object literals, but only the last instance of a duplicated property determines the actual value that will be used for it. Therefore, changing values of other occurrences of a duplicated property will have no effect and may cause misunderstandings and bugs.

What's more, using duplicate property names will generate an error in JavaScript strict mode code. The following code snippet illustrates this rule :

## Noncompliant Code Example

    var data = {
      "key": "value",
      "1": "value",
      "key": "value", // Noncompliant - duplicate of "key"
      'key': "value", // Noncompliant - duplicate of "key"
      key: "value", // Noncompliant - duplicate of "key"
      \u006bey: "value", // Noncompliant - duplicate of "key"
      "\u006bey": "value", // Noncompliant - duplicate of "key"
      "\x6bey": "value", // Noncompliant - duplicate of "key"
      1: "value" // Noncompliant - duplicate of "1"
    }

## Compliant Solution

    var data = {
      "key": "value",
      "1": "value",
      "key2": "value",
      'key3': "value",
      key4: "value",
      \u006bey5: "value",
      "\u006bey6": "value",
      "\x6bey7": "value",
      1b: "value"
    }