Jakiego typu jest null?

0

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

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

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

0
const a = null;
console.log( typeof a );

Wynik: object.

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ę.

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?

2

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

The ECMAScript language types are Undefined, Null, Boolean, String, Symbol,Number, BigInt, and Object.
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:

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".

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 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1