Я читаю главу 4 «Профессиональный Javascript для веб-разработчиков», где говорится, что пять типов примитивов: неопределенные, нулевые, логические, числа и строки.
Если null
примитив, почему typeof(null)
возвращается "object"
?
Разве это не означает, что null
он передается по ссылке (я предполагаю, что здесь все объекты передаются по ссылке), следовательно, делая его НЕ примитивным?
javascript
primitive
thetrystero
источник
источник
Ответы:
Со страницы MDN о поведении
typeof
оператора :источник
Потому что в спецификации так сказано .
источник
typeof
ничего не говорит вам о том, можете ли вы вызывать методы для чего-либо.null
иundefined
..
или[ ]
).Как уже указывалось, в спецификации так сказано. Но поскольку реализация JavaScript предшествовала написанию спецификации ECMAScript, и спецификация была осторожна, чтобы не исправить недостатки начальной реализации, все еще остается законный вопрос о том, почему это было сделано именно таким образом. Дуглас Крокфорд называет это ошибкой . Киро Риск считает, что это что-то вроде :
источник
Из книги YDKJS
источник
короче говоря: это ошибка в ECMAScript, и тип должен быть
null
ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
источник
В JavaScript ноль - это «ничто». Предполагается, что это нечто, чего не существует. К сожалению, в JavaScript тип данных null является объектом. Вы можете считать это ошибкой в JavaScript, когда typeof null является объектом. Это должно быть нулевым.
источник
В JavaScript typeof null является «объектом», что неверно предполагает, что null является объектом. Это ошибка, которая, к сожалению, не может быть исправлена, потому что она сломает существующий код.
источник
для людей, которые заинтересованы в некотором коде, который сделал это поведение, это ссылка для вас, парни .... почему typeof null является объектом с имплиментацией
источник