2016-04-13 15 views
2

Wenn ich unter Code ausführen, druckt es "undefined" zwei Mal. Ich hatte erwartet, dass es einen Fehler auslösen würde, da die Variable nicht definiert ist und auch die Anweisung strict 'oben verwendet wird.Verständnis Javascript Typeof

'use strict'; 
var a; 

console.log(typeof a); 
console.log(typeof b); 

Kann jemand erklären, warum es keinen Fehler verursacht?

+1

, weil das ist, wie es funktioniert ... – Alnitak

+0

einfach 'undefined' bedeutet, dass die Variable noch nicht definiert ist, dass das normale Verhalten ist. –

+2

'typeof' erhöht nie den Fehler: Wenn eine Variable nicht definiert ist, gibt sie "undefined" zurück. Von Entwurf. – MarcoS

Antwort

2

In der Tat in JavaScript undefined bedeutet, dass die Variable ist noch nicht definiert, so dass im Grunde:

  • typeof a kehrt undefined, da die Variable a nur erklärt wurde, aber noch nicht initialisiert (es ihm zugeordneten kein Wert ist).

  • Und typeof b gibt undefined zurück, weil die Variable b noch nicht deklariert ist, also nicht definiert ist.

Und wenn es keinen Wert einer Variablen zugewiesen ist, wird es die Art undefined da als Typ nicht bestimmt werden kann.

Also, wenn Sie die MDN typeof specification überprüfen werden Sie sehen, dass:

The typeof operator returns a string indicating the type of the unevaluated operand, and if you see types table you can see that undefined is a primitive type and one of the possible return values of typeof .

Beispiele:

Und Sie können in dem Beispiele Abschnitt, die undefinierte Rückkehr sehen:

// Undefined

typeof undefined === 'undefined';

typeof declaredButUndefinedVariable === 'undefined';

typeof undeclaredVariable === 'undefined';

Hinweis:

Und wie in Kommentaren angegeben, bezieht sich dies nur auf JavaScript-Syntax und hat nichts mit Nodejs zu tun.

-1

Sie verwenden weder eine Funktion von "a", noch benutzen Sie irgendwelche Funktionen, die einen nicht definierten Parameter enthalten. Typeof prüft nur den Speicherort der Variablen.

-1

undefined ist ein primitive data type,

und das ist eine der möglichen Optionen der typeof Operator zurückkehren kann,

die anderen Optionen kann es zurückgeben sind:

  • boolean
  • number
  • string
  • function
  • object
  • symbol
Verwandte Themen