69 lines
1.7 KiB
Plaintext

JavaScript allows duplicate member names in classes and object literals, but only the last instance of a duplicated name determines the actual value that will be used for it. Therefore, changing values of other occurrences of a duplicated name will have no effect and may cause misunderstandings and bugs.
Defining a ``++class++`` with a duplicated ``++constructor++`` will generate an error.
Before ECMAScript 2015, using duplicate names will generate an error in JavaScript strict mode code.
This rule will also report on duplicate properties in JSX.
== Noncompliant Code Example
[source,javascript]
----
let 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"
}
function MyComponent(props) {
return <div prop={props.prop1} prop={props.prop2}> { /* Noncompliant, 'prop' is defined twice */ }
This is my component
</div>;
}
----
== Compliant Solution
[source,javascript]
----
let data = {
"key": "value",
"1": "value",
"key2": "value",
'key3': "value",
key4: "value",
\u006bey5: "value",
"\u006bey6": "value",
"\x6bey7": "value",
1b: "value"
}
function MyComponent(props) {
return <div prop1={props.prop1} prop2={props.prop2}>
This is my component
</div>;
}
----
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::message.adoc[]
include::highlighting.adoc[]
endif::env-github,rspecator-view[]