Предыдущие слова
В общих языках программирования только нулевой означает пуст, но дизайнер JavaScript Брендан Эйх разработал неопределенную, что, несомненно, увеличивает сложность программы, но есть определенная причина для этого. В этой статье подробно будет введено неопределенное и нулевое в JavaScript
Исторические причины
Когда JavaScript родился в 1995 году, он был изначально установлен как Java, только NULL был установлен как значение, указывающее «нет». Согласно традиции языка C, NULL предназначен для автоматического превращения в 0
Тем не менее, дизайнер JavaScript Брендан Эйх считает, что этого недостаточно по двум причинам. Во -первых, NULL рассматривается как объект, как на Java. Однако значения JavaScript разделены на две категории: примитивные типы и типы объектов. Брендан Эйх считает, что ценность, которая означает «нет», лучше не является объектом. Во -вторых, первоначальная версия JavaScript не включала механизм обработки ошибок. Когда возникает несоответствие типа данных, он часто автоматически преобразует тип или не сбои. Брендан Эйх считает, что если NULL автоматически превращается в 0, трудно найти ошибки
Поэтому Брендан Эйх спроектировал еще одну неопределенную. Это различает это так: NULL - это объект, который представляет «нет», который равен 0 при преобразовании в числовое значение; неопределенное - исходное значение, которое представляет «нет», которое является NAN при преобразовании в числовое значение
Тем не менее, в настоящее время нулевые и неопределенные являются в основном синонимичными, оба являются примитивными типами, и есть только некоторые небольшие различия.
неопределенный
Неопределенный тип имеет только одно значение, которое не определен. Когда объявленная переменная не инициализирована, значение по умолчанию переменной не определено. Таким образом, в целом неопределенные означает, что переменная не инициализируется
var test; // undefinedConsole.log (тест == не определен); // truevar test = undefined; // не определенное
Для переменных, которые не были объявлены, может быть выполнена только одна операция, используя оператор TypeOF для обнаружения их типов данных, но это приведет к ошибке в строгом режиме
typeof (test); // не определен
【Внешний вид сцены】
【1】 объявленные нецензуемые переменные
【2】 Получите атрибуты, которые не существуют в объекте
【3】 Результат выполнения функции без возвращаемого значения
【4】 Параметры функции не передаются в
【5】 void (экспрессия)
var i; console.log (i); // undefinedvar o = {}; console.log (op); // undefinedfunction f () {}; console.log (f ()); // не определенная функция f (x) {return x;} console.log (f ());//undefinedconsole.log (void.leficendiensed.loged (void (void.);【Тип преобразования】
Boolean (неопределенная): FALSCUMBUMER (неопределенное): NANSTRING (UNDEFINED): «Неопределенный»
нулевой
Существует только одно значение для нулевого типа, который является нулевым. NULL - это ключевое слово на языке JavaScript. Он представляет собой особое значение и часто используется для описания «нулевого значения».
Логически, нулевое значение представляет собой указатель пустого объекта
[Примечание] NULL - это пустой указатель объекта, в то время как [] - пустой массив, {} - пустой объект, три разные
console.log (typeof null); // 'объект'
Несмотря на то, что нулевые и неопределенные разные, они оба представляют «пустую стоимость», NULL представляет «нулевое значение», а не определяется «неопределенное». Эти два часто взаимозаменяемы. Оператор судьи равенства == думать, что они равны
console.log (null == не определен); // true
Фактически, поскольку неопределенные и нулевые не являются типами конструкторов, они не имеют никаких свойств и методов. С использованием . и [] для доступа к членам или методам обоих значений будет создавать ошибку типа.
【Тип преобразования】
Boolean (NULL): FALSNumber (NULL): 0String (NULL): 'NULL'
Ниже я представлю разницу между нулевым и неопределенным в JavaScript
Неопределенное представляет значение, когда переменная объявлена, но не инициализирована, а NULL представляет значение, которое готово для использования для сохранения объекта, но на самом деле не сохраняет объект. С логической точки зрения нулевое значение представляет собой пустой указатель объекта.
В JavaScript имеется 5 основных типов (стандарт ECMASCRIPT): неопределенные, нулевые, логические, число, строка и объект сложного типа. Видно, что нулевая и неопределенная принадлежат к разным типам. Неинитированное значение определяется TypeOF как «неопределенное» (строка), в то время как нулевое значение обнаруживается TypeOF как «объект» (строка).
Не рекомендуется явно устанавливать переменную для неопределенной в любое время, но если переменная, которая сохраняет объект, на самом деле не сохранила объект, она должна быть установлена на NULL.
Фактически, неопределенное значение получено из нулевого значения. Стандарт Ecmascript предусматривает, что тест на равенство двух должно быть возвращено правдой, то есть
предупреждение (null == не определен); // истинный