Wann ist eine Variable Null in JS?

3 Antworten

Wenn die Variable keinen Wert hat. Das ist nicht dasselbe wie "undefined". Undefined ist eine Variable, wie der Name schon sagt, wenn sie nicht definiert ist. Undefined nutzt man in der Regel dazu, um eine Variable, deren Wert man noch nicht kennt zu initialisieren:

let var; // typeof var === 'undefined'
// ...
var = 42;

Hingegen setzt man eine Variable auf "null", wenn man explizit sagen möchte "Diese Variable ist zwar definiert, aber sie hat keinen Wert".

Ist ein feiner Unterschied, den man allerdings mit der wachsenden Erfahrung besser versteht.

Woher ich das weiß:Berufserfahrung – Inhaber einer App-Agentur & 15+ Jahre Programmiererfahrung

ilikememes0 
Fragesteller
 01.11.2022, 22:35

Achso ich dachte let und var sind dasselbe😆

0
lordrvn  01.11.2022, 22:43
@ilikememes0

Das Codebeispiel oben ist unglücklich gewählt und da let und var beides statements sind, ist es in der Form auch ungültig und führt zu einem Syntaxfehler. Ob die Variable in diesem Fall mit let oder var deklariert wird, spielt für die Wertzuweisung keine Rolle sondern hat nur Einfluss z.B. auf den Geltungsbereich (functional scope vs block scope).

2
Functional  01.11.2022, 23:24
@lordrvn

Stimmt, das Beispiel war tatsächlich komplett bescheuert. Man kann eine Variable natürlich nicht "var" nennen. Zeit zu schlafen. 🤦🏼‍♂️😂

2
Functional  01.11.2022, 23:30
@ilikememes0

Sorry, "let var" ist natürlich Murks. Setz irgendetwas anderes für "var" ein, das als Variablenname gültig ist.

"let" und "var" sind allerdings nicht dasselbe. Zwar werden durch beides Variablen und nicht Konstanten (wie mit "const") definiert, allerdings hat "var" einen größeren Scope als "let". Variablen, die per "var" definiert wurden, sind im kompletten Function Body (also der Funktion) gültig, während per "let" definierte Variablen nur im direkten Block (also beispielsweise if- oder while-Block) gültig sind. Beispiel (diesmal mit syntaktisch korrekten Variablennamen!):

function someFunction(someParameter) {
  if (someParameter === someValue) {
    var myVar = 1;
    let myLet = 2;

    console.log(myVar); // 1
    console.log(myLet); // 2
  }
  console.log(myVar); // 1
  console.log(myLet); // ReferenceError, da "myLet" in diesem Scope nicht definiert ist
}
1
MrAmazing2  01.11.2022, 23:54
@Functional

Ein weiterer witziger Unterschied:

Erstellst du eine Variable mit let, dann wirft es einen Fehler, wenn du schon vorher versuchst, diese Variable zu verwenden:

console.log(a);
let a;
ReferenceError: can't access lexical declaration 'a' before initialization"

Erstellst du sie hingegen mit var, dann wirft es keinen Fehler:

console.log(a);
var a;
undefined
0

Wenn du sie selbst auf null setzt.

Von alleine ist in JavaScript nichts null. Ich betrachte null daher als Alternative zu undefined, durch welche man zeigen kann, dass die Variable absichtlich, durch den Programmierer, als "leer" markiert wurde.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

Wenn der wert in der Variable unbekannt oder leer ist.

Woher ich das weiß:Berufserfahrung – Informatiker & Entwickler

ilikememes0 
Fragesteller
 01.11.2022, 22:29

Und wie macht man das? Ist die dann nicht undefined?

0
Noah116D  01.11.2022, 22:33
@ilikememes0

-

var testVar;
Variable wurde deklariert, enthält keinen Wert, der aber nachträglich eingefügt werden kann.

var testVar = null;

Bedeutet, dass die Variable keinen Wert enthält.

1
ilikememes0 
Fragesteller
 01.11.2022, 22:34
@Noah116D

Aaaah also also let und var haben andere eigenschaften danke

0