Что означают различные значения, возвращаемые оператором 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 . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.