Что означают различные значения, возвращаемые оператором typeof
, и как вы можете использовать их в своих интересах.
typeof
operator — это оператор JavaScript, который используется для определения типа операнда. Он возвращает строку, соответствующую типу операнда. В этом сообщении блога мы обсудим, что означают различные значения, возвращаемые оператором typeof
, и как вы можете использовать их в своих интересах.
Типы данных JavaScript
Во-первых, давайте рассмотрим различные типы данных, которые поддерживает JavaScript. Существует семь основных типов данных, которые считаются примитивными:
- логический
- Нулевой
- Неопределенный
- Число
- Нить
- Символ (новое в ECMAScript 2015) BigInt (новое в ECMAScript 2020)
- BigInt
Эти примитивные типы являются неизменяемыми, то есть их значения не могут быть изменены. В дополнение к этим примитивным типам в JavaScript также есть ссылочный тип. Ссылочный тип называется Object и представляет собой сложный тип данных. Все, что не является примитивным типом, является объектом. Объекты изменяемы, то есть их значения могут быть изменены. В JavaScript и массивы, и функции являются объектами.
Тип оператора
Теперь, когда у нас есть общее представление о различных типах данных в JavaScript, давайте подробнее рассмотрим оператор typeof
. typeof
operator принимает один операнд, оценивает тип операнда и возвращает строку, соответствующую этому типу.
Синтаксис оператора typeof
прост, так как это просто ключевое слово typeof
, за которым следует операнд:
// syntax: typeof operand | |
typeof 7 // returns 'number' |
Существует альтернативный синтаксис, который использует круглые скобки, когда вы хотите определить тип данных выражений.
// syntax: typeof (operand) | |
let num = 100; | |
typeof num + " hello" // 'number hello' | |
typeof (num + "hello") // 'string' |
В приведенном выше примере показано, что без круглых скобок оператор typeof
вернет тип данных первого встречного операнда. В данном случае это число, так как операндом является переменная num, равная 100. Однако, когда мы добавляем круглые скобки вокруг выражения, оно возвращает тип данных выражения, который является строкой. Это связано с тем, что выражение 100 + ‘ hello’
оценивается как ‘100 hello’
из-за приведения типов.
Простые примеры
Следующий фрагмент кода иллюстрирует результат использования typeof
operator для различных значений.
typeof true // 'boolean' | |
typeof 42 // 'number' | |
typeof 12n // 'bigint' | |
typeof "Hello, world!" // 'string' | |
typeof '42' // 'string' | |
typeof Symbol("Web Development") // 'symbol' | |
typeof function () {} // 'function' | |
typeof undefined // 'undefined' |
В этих примерах typeof
operator кажется довольно простым. Однако есть некоторые значения, которые могут привести к неожиданным результатам.
Неожиданные результаты от typeof
Тип массива:
В JavaScript массивы считаются типом объекта. Поэтому, когда вы используете typeof
operator для массива, он вернет «объект».
typeof [0, false, “hello”] // ‘object’
Тип NaN:
NaN — это значение, представляющее Not-A-Number. Из всех типов данных вы не ожидаете, что NaN будет классифицирован как число. Однако typeof
operator возвращает «число» для значений NaN.
Тип нуля:
В JavaScript typeof
operator возвращает «объект» для значений, которые равны нулю. Эта ошибка связана с ранними днями JavaScript. В 2015 году было предложено исправление, но оно было отклонено из-за проблем с совместимостью.
typeof null // ‘object’
Тип необъявленной переменной:
Если вы попытаетесь использовать typeof
operator для переменной, которая не была объявлена, она вернет значение «undefined».
typeof doesNotExist // ‘undefined’
Заключение
typeof
operator — это мощный инструмент для проверки типа данных значения в JavaScript. Однако есть некоторые значения, которые могут привести к неожиданным результатам. Важно знать об этих пограничных случаях, поскольку это позволяет вам иметь возможность отлаживать с использованием оператора typeof
.
Я надеюсь, что эта статья развеяла ваши сомнения! Удачи на собеседованиях по кодированию!
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.