В JavaScript null, NaN и undefined — это специальные значения, которые обозначают отсутствие или недопустимость значения. Правильная обработка этих значений имеет решающее значение для написания надежного кода. В этой статье мы представляем 18 готовых к интервью фрагментов кода, которые демонстрируют различные методы работы с null, NaN и undefined. Каждый фрагмент кода подробно объясняется, и для облегчения понимания предоставляется пример вывода.
Фрагмент 1: Проверка, является ли значение нулевым
const value = null; console.log(value === null);
Вывод: правда
Объяснение. Фрагмент кода проверяет, установлено ли явное значение null с помощью оператора строгого равенства (===
).
Фрагмент 2: Проверка того, не определено ли значение
let value; console.log(value === undefined);
Вывод: правда
Объяснение. Фрагмент кода проверяет, установлено ли явное значение undefined с помощью оператора строгого равенства (===
).
Фрагмент 3: Проверка, является ли значение NaN
const value = NaN; console.log(Number.isNaN(value));
Вывод: правда
Объяснение. Фрагмент кода использует метод Number.isNaN()
, чтобы проверить, является ли значение NaN.
Фрагмент 4: Проверка, является ли значение нулевым или неопределенным
let value; console.log(value == null);
Вывод: правда
Объяснение. Фрагмент кода использует нестрогий оператор равенства (==
), чтобы проверить, является ли значение нулевым или неопределенным.
Фрагмент 5: Оператор объединения для предоставления значения по умолчанию для null или undefined
const value = null; console.log(value ?? 'Default Value');
Вывод: значение по умолчанию
Объяснение.В этом фрагменте кода используется нулевой оператор объединения (??
) для предоставления значения по умолчанию, когда исходное значение равно null или не определено.
Фрагмент 6: преобразование неопределенного значения в значение по умолчанию
let value; console.log(value || 'Default Value');
Вывод: значение по умолчанию
Объяснение. Фрагмент кода использует логический оператор ИЛИ (||
) для предоставления значения по умолчанию, когда исходное значение не определено.
Фрагмент 7: Преобразование null или undefined в пустую строку
let value; console.log(value ?? '');
Вывод: ‘’
Объяснение. Фрагмент кода использует оператор объединения с нулевым значением (??
) для преобразования значений null или undefined в пустую строку.
Фрагмент 8: Преобразование NaN в ноль
const value = NaN; console.log(Number.isNaN(value) ? 0 : value);
Вывод: 0
Объяснение. Фрагмент кода использует условный (тернарный) оператор для преобразования NaN в ноль.
Фрагмент 9: Проверка, объявлена ли переменная
console.log(typeof variable !== 'undefined');
Вывод: ложь
Объяснение.Фрагмент кода проверяет, объявлена ли переменная, сравнивая ее тип с «неопределенным» с помощью оператора typeof.
Фрагмент 10: Проверка определения свойства объекта
const obj = {}; console.log(obj.hasOwnProperty('property'));
Вывод: ложь
Объяснение. Фрагмент кода проверяет наличие у объекта obj
определенного свойства с именем "свойство" с помощью метода hasOwnProperty()
.
Фрагмент 11. Безопасный доступ к вложенным свойствам
const obj = { nested: { property: 'value' } }; console.log(obj?.nested?.property);
Вывод: «значение»
Объяснение. Фрагмент кода использует необязательный оператор цепочки (?.
) для безопасного доступа к вложенным свойствам без возникновения ошибки, если какое-либо промежуточное свойство имеет значение null или не определено.
Фрагмент 12: установка значения по умолчанию для отсутствующего свойства объекта
const obj = {}; console.log(obj.property ?? 'Default Value');
Вывод: «Значение по умолчанию»
Объяснение. Фрагмент кода использует нулевой оператор объединения (??
) для предоставления значения по умолчанию, если свойство отсутствует.
Фрагмент 13: Возврат значения по умолчанию для аргумента функции
function greet(name) { name = name ?? 'Guest'; console.log(`Hello, ${name}!`); } greet();
Вывод: "Здравствуйте, Гость!"
Объяснение. Фрагмент кода использует нулевой оператор объединения (??
) для установки значения по умолчанию для параметра name
функции greet()
.
Фрагмент 14: Проверка истинности значения
const value = null; console.log(!!value);
Вывод: ложь
Объяснение. Фрагмент кода использует двойное отрицание (!!
) для преобразования значения в логическое значение и определения его достоверности.
Фрагмент 15: Проверка ложности значения
const value = null; console.log(!value);
Вывод: правда
Объяснение. Фрагмент кода использует оператор отрицания (!
) для преобразования значения в логическое значение и определения его ложности.
Фрагмент 16: Короткое замыкание для предотвращения доступа к неопределенным свойствам
const obj = null; console.log(obj?.property?.nested);
Вывод: не определено
Объяснение. Фрагмент кода использует необязательный оператор цепочки (?.
) для сокращения выражения, если какое-либо промежуточное свойство имеет значение null или не определено.
Фрагмент 17: Преобразование нуля в пустой массив
const value = null; console.log(value || []);
Вывод: []
Объяснение.В этом фрагменте кода используется логический оператор ИЛИ (||
) для преобразования нулевого значения в пустой массив.
Фрагмент 18: Удаление нулевых и неопределенных значений из массива
const arr = [1, null, 2, undefined, 3]; console.log(arr.filter(Boolean));
Вывод: [1, 2, 3]
Объяснение. Фрагмент кода использует метод filter()
с конструктором Boolean
в качестве функции обратного вызова для удаления нулевых и неопределенных значений из массива.
Заключение:
Понимание того, как обрабатывать значения null, NaN и undefined в JavaScript, необходимо для написания надежного кода без ошибок. Предоставленные 18 фрагментов кода охватывают ряд сценариев, демонстрируя такие методы, как нулевое объединение, необязательные цепочки, логические операторы и проверки типов. Ознакомившись с этими фрагментами, вы будете хорошо подготовлены к собеседованиям по JavaScript и сможете писать чистый, устойчивый к ошибкам код.
Надеюсь, что приведенная выше статья дала лучшее понимание. Если у вас есть какие-либо вопросы относительно областей, которые я обсуждал в этой статье, области улучшения, не стесняйтесь комментировать ниже.
[Раскрытие информации: эта статья является совместным творением, в котором мои собственные идеи сочетаются с помощью ChatGPT для оптимальной артикуляции.]