353 Stimmen

Kann ich Variablen auf undefiniert setzen oder undefiniert als Argument übergeben?

Ich bin ein wenig verwirrt über JavaScript's undefined y null Werte.

Was bedeutet if (!testvar) tatsächlich tun? Testet es auf undefined y null oder einfach undefined ?

Sobald eine Variable definiert ist, kann ich sie wieder auf undefined (wodurch die Variable gelöscht wird)?

Kann ich bestehen? undefined als Parameter? z.B.:

function test(var1, var2, var3) {

}

test("value1", undefined, "value2");

7voto

Skilldrick Punkte 66961

Um Ihre erste Frage zu beantworten: Der Operator not ( ! ) verwandelt das, was ihm gegeben wird, in einen booleschen Wert. Also null , 0 , false , NaN y "" (leere Zeichenkette) werden alle falsch angezeigt.

4voto

Eric Leschinski Punkte 134271

JavaScript, wie man eine Variable auf der Kommandozeile auf undefiniert setzt:

Setzen Sie eine Variable auf undefiniert in der js javascript Kommandozeilen-Terminal, das mit Java auf Ubuntu 12.10 kommt.

el@defiant ~ $ js

js> typeof boo
"undefined"

js> boo
typein:2: ReferenceError: boo is not defined

js> boo=5
5

js> typeof boo
"number"

js> delete(boo)
true

js> typeof boo
"undefined"

js> boo
typein:7: ReferenceError: boo is not defined

Wenn Sie eine Variable in einem Javascript auf undefiniert setzen:

Fügen Sie dies in myjs.html ein:

<html>
<body>
    <script type="text/JavaScript">
        document.write("aliens: " + aliens);
        document.write("typeof aliens: " + (typeof aliens));
        var aliens = "scramble the nimitz";
        document.write("found some aliens: " + (typeof aliens));
        document.write("not sayings its aliens but... " + aliens);
        aliens = undefined;
        document.write("aliens deleted");
        document.write("typeof aliens: " + (typeof aliens));
        document.write("you sure they are gone? " + aliens);
    </script>
</body>
</html>

Er druckt dies:

aliens: undefined
typeof aliens: undefined
found some aliens: string
not sayings its aliens but... scramble the nimitz
aliens deleted
typeof aliens: undefined
you sure they are gone? undefined

WARNUNG! Wenn Sie Ihre Variable auf undefiniert setzen, setzen Sie Ihre Variable auf eine andere Variable. Wenn eine hinterhältige Person undefined = 'rm -rf /'; dann erhalten Sie diesen Wert, wenn Sie Ihre Variable auf undefiniert setzen.

Sie fragen sich vielleicht, wie ich den undefinierten Wert "Aliens" am Anfang ausgeben kann, ohne dass das Programm abläuft. Es ist wegen der javascript hoisting: http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html

3voto

Cqq Cqq Punkte 31

Versuchen Sie dies:

// found on UglifyJS
variable = void 0;

2voto

Guffa Punkte 663241

Die für if (something) y if (!something) wird üblicherweise verwendet, um zu prüfen, ob etwas definiert oder nicht definiert ist. Zum Beispiel:

if (document.getElementById)

Der Bezeichner wird in einen booleschen Wert umgewandelt, also undefined wird interpretiert als false . Es gibt natürlich auch andere Werte (wie 0 und ''), die ebenfalls interpretiert werden als false aber entweder sollte der Bezeichner vernünftigerweise keinen solchen Wert haben oder Sie sind damit zufrieden, einen solchen Wert als undefiniert zu behandeln.

Javascript hat eine delete Operator, der verwendet werden kann, um ein Mitglied eines Objekts zu löschen. Je nach Anwendungsbereich einer Variablen (d.h. ob sie global ist oder nicht) können Sie sie löschen, um sie undefiniert zu machen.

Es gibt keine undefined Schlüsselwort, das Sie als undefiniertes Literal verwenden können. Sie können Parameter in einem Funktionsaufruf auslassen, um sie undefiniert zu machen, aber das kann nur verwendet werden, indem man weniger Parameter an die Funktion sendet, man kann keinen Parameter in der Mitte auslassen.

2voto

rdans Punkte 2153

Nur zum Spaß, hier ist ein ziemlich sicherer Weg, um "unassigned" zu einer Variablen zuweisen. Damit es zu einer Kollision kommt, müsste jemand dem Prototyp für Object genau den gleichen Namen wie die zufällig generierte Zeichenkette hinzugefügt haben. Ich bin mir sicher, dass der Zufallsgenerator für Zeichenketten verbessert werden könnte, aber ich habe einfach eine aus dieser Frage genommen: Zufällige Zeichenketten/Zeichen in JavaScript generieren

Dazu wird ein neues Objekt erstellt und versucht, auf eine Eigenschaft mit einem zufällig generierten Namen zuzugreifen, von dem wir annehmen, dass er nicht existiert und daher den Wert "undefined" hat.

function GenerateRandomString() {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for (var i = 0; i < 50; i++)
        text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
}

var myVar = {}[GenerateRandomString()];

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