55 Stimmen

JavaScript `undefined` vs `void 0`

Was ist genau der Unterschied zwischen undefined und void 0?

Welches wird bevorzugt und warum?

77voto

duri Punkte 14643

Der Unterschied besteht darin, dass einige Browser es ermöglichen, den Wert von undefined zu überschreiben. Allerdings gibt void anything immer das echte undefined zurück.

undefined = 1;
console.log(!!undefined); //true
console.log(!!void 0); //false

29voto

Esailija Punkte 134081

undefined hat eine normale Variablen-Semantik, die selbst der Strict-Modus nicht beheben kann und erfordert eine Laufzeit-Suche. Es kann wie jede andere Variable überschattet werden, und die standardmäßige globale Variable undefined ist in ES3 nicht schreibgeschützt.

void 0 ist effektiv eine zu kompilierende konstante Schutzmaßnahme für undefined ohne Suchanforderungen. Es ist ähnlich wie das Schreiben von null oder true, anstatt den Wert einer Variablen nachzuschlagen. Es funktioniert sofort, ohne Sicherheitsargumente, und ist kürzer zu schreiben. Es ist in jeder Hinsicht besser.

3voto

Daniel A. White Punkte 180762

Verwenden Sie undefined. Es ist bekannter als void(0).

-3voto

user422039 Punkte 1399

Klammern sind hier optional, void 0, void(0) und void (0) sind äquivalent. Das void ist ein unärer Operator mit rechts-nach-links Assoziativität, daher wird der Wert rechts davon platziert:

void .

Für die zweite Frage müssen Sie undefined direkt verwenden, um eine unnötige Operandenauswertung zu vermeiden und den gleichen undefined-Wert abzurufen.

Weitere Informationen finden Sie unter: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X