Beim Durchlesen des Backbone.js-Quellcodes habe ich dies gesehen:
validObj[attr] = void 0;
¿Qué es? void 0
? Was ist der Zweck der Verwendung hier?
Beim Durchlesen des Backbone.js-Quellcodes habe ich dies gesehen:
validObj[attr] = void 0;
¿Qué es? void 0
? Was ist der Zweck der Verwendung hier?
void 0
bedeuten?void
[MDN] ist ein Präfix-Schlüsselwort, das ein Argument annimmt und immer zurückgibt undefined
.
Beispiele
void 0
void (0)
void "hello"
void (new Date())
//all will return undefined
Das scheint ziemlich nutzlos zu sein, nicht wahr? Wenn es immer zurückkommt undefined
Was ist falsch daran, einfach die undefined
selbst?
In einer perfekten Welt könnten wir sicher einfach die undefined
: Es ist viel einfacher und leichter zu verstehen als void 0
. Aber falls Sie es noch nicht bemerkt haben, Dies ist keine perfekte Welt besonders wenn es um Javascript geht.
Das Problem bei der Verwendung von undefined
war, dass undefined
ist kein reserviertes Wort ( es ist eigentlich eine Eigenschaft des globalen Objekts [wtfjs] ). Das heißt, undefined
ist ein zulässiger Variablenname, so dass Sie ihm nach Belieben einen neuen Wert zuweisen können.
alert(undefined); //alerts "undefined"
var undefined = "new value";
alert(undefined) // alerts "new value"
Hinweis: Dies ist kein Problem mehr in jeder Umgebung, die ECMAScript 5 oder neuer unterstützt (d.h. in der Praxis überall außer IE 8), der die undefined
Eigenschaft des globalen Objekts als schreibgeschützt (so dass es nur möglich ist, die Variable in Ihrem eigenen lokalen Bereich zu schattieren). Diese Information ist jedoch für die Abwärtskompatibilität weiterhin nützlich.
alert(window.hasOwnProperty('undefined')); // alerts "true"
alert(window.undefined); // alerts "undefined"
alert(undefined === window.undefined); // alerts "true"
var undefined = "new value";
alert(undefined); // alerts "new value"
alert(undefined === window.undefined); // alerts "false"
void
kann hingegen nicht übergangen werden. void 0
sera immer return undefined
. undefined
Andererseits kann Mr. Javascript alles sein, was er will.
void 0
konkret?Warum sollten wir die void 0
? Was ist so besonders an 0
? Könnten wir nicht genauso gut die 1
ou 42
ou 1000000
o "Hello, world!"
?
Und die Antwort lautet: Ja, das könnten wir, und es würde genauso gut funktionieren. Der einzige Vorteil der Übergabe in 0
anstelle eines anderen Arguments ist, dass 0
ist kurz und idiomatisch.
Obwohl undefined
in modernen JavaScript-Umgebungen im Allgemeinen vertraut werden kann, gibt es einen trivialen Vorteil von void 0
: Sie ist kürzer. Der Unterschied ist nicht so groß, dass man sich beim Schreiben von Code Sorgen machen müsste, aber er kann sich bei großen Codebasen so sehr summieren, dass die meisten Code-Minifier die undefined
con void 0
um die Anzahl der an den Browser gesendeten Bytes zu reduzieren.
void
ist ein reserviertes JavaScript-Schlüsselwort. Es wertet den Ausdruck aus und gibt immer undefined
.
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.