Определение типов данных в JavaScript c помощью typeof
JavaScript typeof является оператором, который позволяет определить тип операнда. Этот оператор возвращает строковое значение, которое указывает на тип переданного значения. Операндом может быть объявленная переменная, литерал или выражение.
Например, использование typeof с переменной типа числа:
let num = 10;
console.log(typeof num); // выведет "number"
Следующий пример демонстрирует использование typeof с разными типами данных:
let num = 10;
let str = "Hello";
let bool = true;
let obj = {name: "John", age: 25};
let arr = [1,2,3];
console.log(typeof num); // number
console.log(typeof str); // string
console.log(typeof bool); // boolean
console.log(typeof obj); // object
console.log(typeof arr); // object
При проверке массива или объекта с помощью typeof результатом всегда будет "object", поскольку в JavaScript массивы и объекты являются типом данных объект.
Для проверки, является ли операнд функцией, можно использовать следующий код:
function greet(name) {
console.log("Hello, " + name + "!");
}
console.log(typeof greet); // function
Кроме того, можно создать свои собственные типы данных, используя конструктор функций, например:
function Person(name, age) {
this.name = name;
this.age = age;
}
let john = new Person("John", 25);
console.log(typeof john); // object
console.log(john instanceof Person); // true
В этом примере типом данных для объекта является пользовательский тип данных "Person", созданный с помощью конструктора функции. В результате оператор typeof возвращает "object", как и в предыдущих примерах работы с объектами.
Также важно знать, что typeof не может отличить строковый литерал от переменной, содержащей строку. Например:
console.log(typeof "hello"); // string
let str = "world";
console.log(typeof str); // string
В обоих примерах результат будет "string", поскольку оператор typeof не может различить строковый литерал от переменной, содержащей строку.
В итоге, оператор typeof в JavaScript предоставляет информацию о типе данных переданного операнда, чем позволяет программисту грамотно и удобно работать с данными в своих скриптах.