Jakiego typu jest null?

Jakiego typu jest null?
S5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
0

Jakiego typu jest null w javascripcie ? Można znależć sporo informacji, że jest typem typu object. Jednak, gdy zrobi się coś takiego:

Kopiuj
const a = null;
console.log(a instanceof Object);

to zostaje zwrócona wartość false. To jak to jest?

overcq
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 402
0
Kopiuj
const a = null;
console.log( typeof a );

Wynik: object.

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1452
3

Nie jest obiektem, jest jednym z JavaScriptowych prymitywów: https://developer.mozilla.org/en-US/docs/Glossary/Primitive

To co @overcq traktuje jako dowód jest uważane za błędne zachowanie
https://developer.mozilla.org/en-US/docs/Glossary/Null

A gdyby ktoś nie uznawał MDN za rzetelne źródło to zachęcam do zajrzenia bezpośrednio w specyfikację.

S5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
0
Saalin napisał(a):

Nie jest obiektem, jest jednym z JavaScriptowych prymitywów: https://developer.mozilla.org/en-US/docs/Glossary/Primitive

To co @overcq traktuje jako dowód jest uważane za błędne zachowanie
https://developer.mozilla.org/en-US/docs/Glossary/Null

A gdyby ktoś nie uznawał MDN za rzetelne źródło to zachęcam do zajrzenia bezpośrednio w specyfikację.

Czyli jaki typ prymitywny ma null ? Po prostu null?

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1452
2

Tak, zgodnie ze specyfikacją ECMA (punkt 6.1) typem nulla jest null.

Kopiuj
The ECMAScript language types are Undefined, Null, Boolean, String, Symbol,Number, BigInt, and Object.
Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0
sajek587 napisał(a):

Jakiego typu jest null w javascripcie ? Można znależć sporo informacji, że jest typem typu object. Jednak, gdy zrobi się coś takiego:

Kopiuj
const a = null;
console.log(a instanceof Object);

to zostaje zwrócona wartość false. To jak to jest ?

Czytając ze specyfikacji języka https://tc39.es/ecma262/multipage/overview.html#sec-null-value mamy że null jest prymitywem z typem "Null", ale widocznie sam język nie jest z tym konsystentny bo typeof null to "object".

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1452
1
Riddle napisał(a):

Czytając ze specyfikacji języka https://tc39.es/ecma262/multipage/overview.html#sec-null-value mamy że null jest prymitywem z typem "Null", ale widocznie sam język nie jest z tym konsystentny bo typeof null to "object".

Standard definiuje zachowanie typeof: https://tc39.es/ecma262/#sec-typeof-operator ale nigdzie nie jest napisane co właściwie typeof oznacza, a w szczególności, że zwraca typ ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.