Учебник по JS

ГЛАВНАЯ JS Введение JS Куда Вывод JS Заявления JS JS-синтаксис JS-комментарии JS-переменные JS Пусть Константа JS JS-операторы JS-арифметика Назначение JS JS-типы данных JS-функции JS-объекты JS-события JS-строки Строковые методы JS Поиск строки JS Шаблоны строк JS JS-номера Методы номеров JS JS-массивы Методы массива JS Сортировка массива JS Итерация массива JS Константа массива JS JS-даты Форматы даты JS Методы получения даты JS Методы установки даты JS JS-математика JS Случайный JS Булевы значения Сравнение JS JS-условия JS-переключатель JS цикл для Цикл JS для входа Цикл JS для Цикл JS во время Перерыв JS JS-итерации JS-наборы JS-карты JS Typeof Преобразование типов JS JS побитовый JS регулярное выражение JS-ошибки Область JS JS-подъем Строгий режим JS JS это ключевое слово Функция стрелки JS JS-классы JS JSON JS-отладка Руководство по стилю JS Лучшие практики JS JS-ошибки JS-производительность Зарезервированные слова JS

JS-версии

JS-версии JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE/пограничный История JS

JS-объекты

Определения объектов Свойства объекта Методы объекта Отображение объекта Средства доступа к объектам Конструкторы объектов Прототипы объектов Итерации объектов Наборы объектов Карты объектов Ссылка на объект

JS-функции

Определения функций Параметры функции Вызов функции Вызов функции Функция Применить Закрытие функций

JS-классы

Введение в класс Наследование классов Статический класс

JS асинхронный

Обратные вызовы JS JS асинхронный JS-обещания JS асинхронный/ожидание

JS HTML DOM

Дом Введение DOM-методы Документ DOM DOM-элементы DOM HTML DOM-формы ДОМ CSS DOM-анимации События ДОМ Слушатель событий DOM DOM-навигация DOM-узлы Коллекции DOM Списки узлов DOM

Спецификация браузера JS

JS-окно JS-экран Местоположение JS История JS JS-навигатор Всплывающее оповещение JS JS Тайминг JS-куки

JS-веб-API

Введение в веб-API API веб-форм API истории веб-поиска API веб-хранилища API веб-работника API веб-выборки API веб-геолокации

JS АЯКС

Введение в АЯКС AJAX XMLHttp АЯКС-запрос AJAX-ответ XML-файл AJAX АЯКС PHP АЯКС АСП База данных AJAX AJAX-приложения Примеры AJAX

JS JSON

Введение в JSON Синтаксис JSON JSON против XML Типы данных JSON Анализ JSON Строковая JSON JSON-объекты JSON-массивы JSON-сервер JSON PHP JSON HTML JSON JSONP

JS против JQuery

Селекторы jQuery JQuery HTML jQuery CSS JQuery DOM

JS-графика

JS-графика JS Холст JS сюжет JS Chart.js JS Google Диаграмма JS D3.js

JS-примеры

JS-примеры JS HTML DOM JS HTML-ввод HTML-объекты JS HTML-события JS JS-браузер JS-редактор JS-упражнения JS-викторина JS-сертификат

JS-ссылки

Объекты JavaScript HTML DOM-объекты


тип JavaScript


В JavaScript есть 5 различных типов данных, которые могут содержать значения:

  • string
  • number
  • boolean
  • object
  • function

Существует 6 типов объектов:

  • Object
  • Date
  • Array
  • String
  • Number
  • Boolean

И 2 типа данных, которые не могут содержать значений:

  • null
  • undefined

Тип оператора

Вы можете использовать typeofоператор, чтобы найти тип данных переменной JavaScript.

Пример

typeof "John"                 // Returns "string"
typeof 3.14                   // Returns "number"
typeof NaN                    // Returns "number"
typeof false                  // Returns "boolean"
typeof [1,2,3,4]              // Returns "object"
typeof {name:'John', age:34}  // Returns "object"
typeof new Date()             // Returns "object"
typeof function () {}         // Returns "function"
typeof myCar                  // Returns "undefined" *
typeof null                   // Returns "object"

Пожалуйста, обратите внимание:

  • Тип данных NaN — число
  • Тип данных массива — объект
  • Тип данных даты - объект
  • Тип данных null является объектом
  • Тип данных неопределенной переменной не определен *
  • Тип данных переменной, которой не присвоено значение, также не определен *

Вы не можете использовать typeof, чтобы определить, является ли объект JavaScript массивом (или датой).



Примитивные данные

Примитивное значение данных — это одно простое значение данных без дополнительных свойств и методов.

Оператор typeofможет вернуть один из этих примитивных типов:

  • string
  • number
  • boolean
  • undefined

Пример

typeof "John"              // Returns "string"
typeof 3.14                // Returns "number"
typeof true                // Returns "boolean"
typeof false               // Returns "boolean"
typeof x                   // Returns "undefined" (if x has no value)

Сложные данные

Оператор typeofможет возвращать один из двух сложных типов:

  • function
  • object

Оператор typeofвозвращает "object" для объектов, массивов и null.

Оператор typeofне возвращает «объект» для функций.

Пример

typeof {name:'John', age:34} // Returns "object"
typeof [1,2,3,4]             // Returns "object" (not "array", see note below)
typeof null                  // Returns "object"
typeof function myFunc(){}   // Returns "function"

Оператор typeofвозвращает " object" для массивов, потому что в JavaScript массивы являются объектами.


Тип данных typeof

Оператор typeofне является переменной. Это оператор. Операторы ( + - * / ) не имеют никакого типа данных.

Но typeofоператор всегда возвращает строку (содержащую тип операнда).


Свойство конструктора

Свойство constructorвозвращает функцию-конструктор для всех переменных JavaScript.

Пример

"John".constructor                // Returns function String()  {[native code]}
(3.14).constructor                // Returns function Number()  {[native code]}
false.constructor                 // Returns function Boolean() {[native code]}
[1,2,3,4].constructor             // Returns function Array()   {[native code]}
{name:'John',age:34}.constructor  // Returns function Object()  {[native code]}
new Date().constructor            // Returns function Date()    {[native code]}
function () {}.constructor        // Returns function Function(){[native code]}

Вы можете проверить свойство конструктора, чтобы узнать, является ли объект Array (содержит слово «массив»):

Пример

function isArray(myArray) {
  return myArray.constructor.toString().indexOf("Array") > -1;
}

Или, что еще проще, вы можете проверить, является ли объект функцией массива :

Пример

function isArray(myArray) {
  return myArray.constructor === Array;
}

Вы можете проверить свойство конструктора, чтобы узнать, является ли объект Date(содержит слово «Дата»):

Пример

function isDate(myDate) {
  return myDate.constructor.toString().indexOf("Date") > -1;
}

Или, что еще проще, вы можете проверить, является ли объект функцией Date :

Пример

function isDate(myDate) {
  return myDate.constructor === Date;
}


Неопределенный

В JavaScript переменная без значения имеет значение undefined. Тип тоже undefined.

Пример

let car;    // Value is undefined, type is undefined

Любую переменную можно очистить, присвоив ей значение undefined. Тип тоже будет undefined.

Пример

car = undefined;    // Value is undefined, type is undefined

Пустые значения

Пустое значение не имеет ничего общего с undefined.

Пустая строка имеет допустимое значение и тип.

Пример

let car = "";    // The value is "", the typeof is "string"

Нулевой

В JavaScript nullэто «ничего». Это должно быть что-то, чего не существует.

К сожалению, в JavaScript типом данных nullявляется объект.

Вы можете считать это ошибкой в ​​JavaScript, которая typeof nullявляется объектом. Это должно быть null.

Вы можете очистить объект, установив для него значение null:

Пример

let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null;    // Now value is null, but type is still an object

Вы также можете очистить объект, установив для него значение undefined:

Пример

let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined;   // Now both value and type is undefined

Разница между неопределенным и нулевым

undefinedи nullравны по значению, но различны по типу:

typeof undefined           // undefined
typeof null                // object

null === undefined         // false
null == undefined          // true