Laut MDN-Dokumentation zuundefined
:
In modernen Browsern (JavaScript 1.8.5 / Firefox 4+) ist undefined eine nicht konfigurierbare, nicht beschreibbare Eigenschaft gemäß der ECMAScript 5-Spezifikation. Vermeiden Sie es, dies zu überschreiben, auch wenn dies nicht der Fall ist.
Eines der Eigenschaftsattribute von undefined ist, dass es nicht beschreibbar ist.
Aber wenn ich es mache:
var undefined = 'hello';
var test = undefined;
console.log(typeof test);
//string
Bedeutet das, dass ich den Wert von überschreiben kann undefined
? Was passiert, wenn jemand das tut? Sollte JavaScript davor warnen?
javascript
typeof
Pmiranda
quelle
quelle
typeof test === "undefined"
)typeof undefined
kehrt"undefined"
unter normalen Umständen zurück."undefined"
ist eine Zeichenfolge. Die Frage ist nicht, wastypeof (typeof undefined)
bewertet wird. Es wird gefragt, wastypeof undefined
bewertet wird. Es kehrt zurück"undefined"
, nicht"string"
typeof ______
ist ein Ausdruck, der zu einer Zeichenfolge ausgewertet wird, die den Typ des enthält______
. Sie verstehen die Frage falsch.Antworten:
Ein entfernter Kommentar von Amy gibt die Lösung. Sie erstellen eine Variable mit dem Namen
undefined
und es funktioniert nicht, wenn Sie Ihre Snippets im globalen Bereich ausführen:Aber es funktioniert effektiv, wenn Sie es in einem lokalen Bereich tun, in dem undefined nicht mehr auf die globale Variable verweist:
Um diesen Fehler zu vermeiden, können Sie die folgende
'use strict';
Anweisung verwenden:Wenn Sie Code schreiben, bei dem Sie nicht steuern können, wo er ausgeführt wird (z. B. Bibliothek, Einbettung usw.), ist es ein gutes Muster, ein IIFE zu verwenden, mit dem Sie sicherstellen können, dass undefiniert immer korrekt / verwendbar ist. Hier ist ein Beispiel:
Alle meine Tests wurden mit Firefox 72.0b10 (64 Bit) unter Ubuntu durchgeführt, und das Ergebnis für das erste Snippet kann in einem älteren Browser abweichen.
quelle
let indefinido= dataArray( (a) => (anotherArray.includes(someName)));
Wir haben überprüft, ob diese Variable " undefiniert "ist (das Ergebnis vonfind
ohne gefundene Elemente) oder nicht. Dann übersetzte erindefinido
zuundefined
Ich sah, dass ich es auf Chrome und Edge testete und einen Unterschied sah. Deshalb bin ich hierher gekommen, um die Meinung der anderen zu erfragen, weil ich auch lerne.void 0
Quelle https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined
undefined
ist nicht reserviert, daher ist es möglich, ihm einen neuen Wert zuzuweisen.Wenn Sie nicht verwenden
strict mode
, erstellen Sie im Wesentlichen eine Variable, dieundefined
im lokalen Bereich aufgerufen wird, und weisen ihr einenstring
Wert zu.undefined
ist eine Eigenschaft des globalen Objekts . Der Anfangswert von undefined ist der Grundwertundefined
.use strict
Dies hilft, diesen Fehler im globalen Bereich zu vermeiden, solange er im lokalen Bereich überschrieben werden kann.Wenn Sie sicherer sein möchten, sollten Sie
void 0
stattdessenundefined
immer zurückkehrenundefined
.quelle
undefined
indem man es als Argument liest. Da dem IIFE hier niemals Argumente übergeben werden, werden sieundefined
darin enthalten sein. ZB((undefined) => console.log(typeof undefined))()