2013-03-05 16 views
10

Ich kam in diesem Schnipsel in kriskowal/q:Warum das Schlüsselwort void verwenden?

/** 
* Applies the promised function in a future turn. 
* @param object promise or immediate reference for target function 
* @param args  array of application arguments 
*/ 
Q.fapply = fapply; 
function fapply(value, args) { 
    return dispatch(value, "apply", [void 0, args]); 
} 

Was der Punkt ist das void Schlüsselwort verwenden? Warum nicht einfach [undefined, args] schreiben?

+8

Weil globale 'undefined' kann neu definiert werden; Es ist kein reserviertes Wort wie 'null'. – raina77ow

+0

.. kann neu definiert werden, aber ab JavaScript 1.8.5 ist undefined nicht beschreibbar, gemäß der ECMAScript 5-Spezifikation. – epascarello

+5

'void 0' ist 3 Zeichen weniger als' undefined'. –

Antwort

9

Vom MDN Docs of void

Syntax

void expression 

Verwendet

Dieser Operator ermöglicht Ausdrücke eingefügt, die Nebenwirkungen in Orte erzeugen, wo ein Ausdruck, der nicht definiert auswertet gewünscht.

Der Hohlraum Operator oft nur verwendet wird, um die nicht definierten Grundwert zu erhalten, in der Regel "void (0)" verwendet (die "VOID 0" entspricht). In diesen Fällen kann stattdessen die globale Variable undefined verwendet werden (vorausgesetzt, sie wurde keinem nicht standardmäßigen Wert zugewiesen).

Und warum?MDN Undefined

In älteren Versionen von JavaScript Siehe undefined außer Kraft gesetzt werden konnte, aber in in JavaScript Start 1.8.5, undefiniert ist nicht beschreibbar, gemäß der ECMAScript 5-Spezifikation.

+2

Ok, es ist also nur eine sicherere Art zu schreiben "undefined"? –

+0

Ja, das ist der Grund. – epascarello

+0

@Rosarch: Um klar zu sein, das globale 'undefined' ist nicht beschreibbar. Sie können es weiterhin in einem lokalen Variablenbereich spiegeln. Aber stellen Sie sicher, dass Sie keinem Code erlauben, "undefined" neu zu definieren, und es ist sicher zu benutzen. –

1

Die Lücke ist ein wichtiges Schlüsselwort in JavaScript, das als ein unärer Operator vor seinem einzelnen Operanden verwendet werden kann, der von jedem Typ sein kann.

Dieser Operator gibt einen Ausdruck an, der ausgewertet werden soll, ohne einen Wert zurückzugeben. Seine Syntax könnte eine der folgenden sein following

Verwandte Themen