2017-04-21 5 views
2

Ich habe zahlreiche Threads über die Klammer-Punkt-Notation beim Zugriff auf Objekte gesehen .... aber ich gehe durch freeCodeCamp und wenn ich auf ein Objekt mit einer Syntax wie SomeonesName['online'] zugreife, würde es vorschlagen, dass ich stattdessen Punktnotation verwenden sollte ?Javascript schlägt Punktnotation vor?

Abgesehen davon, schneller zu sein ..... was genau ist der Vorteil? Alles, was ich gesehen habe minus "Geschwindigkeit" scheint Klammer-Notation ist besser zu denken?

Gibt es etwas, das mir fehlt? vielleicht eine andere Sache, die der "Punkt" Operator besser macht?

+0

Was hast du gesehen, dass Bracket-Notation besser ist? Die meisten Styleguides und/oder Standard-Lintregelsets ermutigen/empfehlen/erfordern, wenn möglich, Punktnotation. –

+0

Ich habe gesehen, wie einige Leute Minifiers verwenden, die Variablen verkürzen, um die Größe ihrer Code-Dateien vor der Veröffentlichung zu reduzieren, aber ["Strings"] unverändert lassen, sodass sie Klammern für öffentliche Variablen verwenden. –

Antwort

3

Die Faustregel ist sehr einfach. Verwenden Sie jedes Mal, wenn Sie Punktnotation verwenden können. Sie müssen nur die Klammernotation verwenden, wenn Sie ungültige JavaScript-Bezeichner bearbeiten müssen oder wenn Sie einen variablen Schlüssel übergeben müssen. Man betrachte folgendes Beispiel:

var obj = { 
 
    foo: "Foo", 
 
    _bar: "Bar", 
 
    $baz: "Baz", 
 
    "foo-bar": "Foo Bar", 
 
    quux: "Quux" 
 
}; 
 
    
 
console.log(obj.foo); 
 
console.log(obj._bar); 
 
console.log(obj.$baz); 
 
console.log(obj['foo-bar']); 
 
    
 
var quux = "quux"; 
 
    
 
console.log(obj[quux]);


Werte können von einem Objekt abgerufen werden, indem eine Zeichenfolge Ausdruck in a [] suffix Einwickeln. Wenn der Zeichenfolgenausdruck eine Zeichenfolge ist Literal, und wenn es ein legaler JavaScript-Name und kein reserviertes Wort ist, dann die. Notation kann stattdessen verwendet werden. Das . Notation ist bevorzugt weil es kompakter ist und es besser liest.

Douglas Crockford, JavaScript: The Good Parts

+0

Obwohl nichts von dem, was Sie geschrieben haben, falsch ist, beantwortet dies nicht die Frage - es sagt nicht, was der Vorteil ist, dies zu tun, und auch nicht, ob es schneller ist. – Shadow

+0

"Werte können von einem Objekt abgerufen werden, indem ein Zeichenfolgenausdruck in ein Suffix [] eingeschlossen wird. Wenn der Zeichenfolgenausdruck ein Zeichenfolgenliteral ist und ein zulässiger JavaScript-Name und kein reserviertes Wort ist, kann die Zeichensatznotation verwendet werden Stattdessen wird die Notation bevorzugt, weil sie kompakter ist und besser liest. "(Douglas Crockford, * JavaScript: The Good Parts *) – Badacadabra

+0

Das sind nützliche Informationen, die Sie zu Ihrer Antwort hinzufügen können. – Shadow

3

Die beiden folgenden Zeilen in Javascript funktional identisch sind;

SomeonesName.online 
SomeonesName["online"] 

Sie müssen nur wirklich eckige Klammern verwenden, wenn Sie einen Schlüssel mit einem Namen zugreifen, die ungültig ist (wie man ein . oder - enthält) oder wenn Sie eine Variable verwenden.

Ansonsten ist die Punktnotation besser zu lesen und zu schreiben, und die meisten Linters und Programmierer bevorzugen es.

In Bezug auf Ihre Bearbeitung - sie sind beide funktional identisch. Sie brauchen die gleiche Zeit, um zu laufen, und mit der richtigen IDE können sie sogar die gleiche Zeit zum Schreiben brauchen. Es ist nur eine Frage der Präferenz. Abgesehen von der Stilkonsistenz gibt es keinen Vorteil.

1

. & [] beide Notationen sind funktional gleich und kein Unterschied in der Ausführungsgeschwindigkeit. Der Unterschied besteht nur, wenn der zugreifende Schlüssel einige Sonderzeichen aufweist, die beim Zugriff auf die Eigenschaft in Javascript konfligieren.

0

Ich würde sagen, verwenden Sie jemals eine bequemer mit. Sei nur konsequent.Ich habe Codeacademy benutzt, und manchmal ist dein Code korrekt, aber freeCodeCamp sucht nach einem bestimmten Weg, um es zur nächsten Lektion zu machen. hoffe das hilft

Verwandte Themen