JavaScript типове данни: Тип обяснен

typeofе ключова дума на JavaScript, която ще върне типа на променлива, когато я извикате. Можете да използвате това, за да проверите функционалните параметри или да проверите дали променливите са дефинирани. Има и други приложения.

На typeofоператора е полезно, тъй като е един лесен начин да се провери вида на променлива в кода си. Това е важно, защото JavaScript е a е динамично въведен език. Това означава, че не се изисква да присвоявате типове на променливи, когато ги създавате. Тъй като променливата не е ограничена по този начин, нейният тип може да се промени по време на изпълнение на програмата.

Например:

var x = 12345; // number x = 'string'; // string x = { key: 'value' }; // object

Както можете да видите от горния пример, променлива в JavaScript може да променя типовете по време на изпълнението на програма. Това може да бъде трудно да се проследи като програмист и тук typeofоператорът е полезен.

На typeofоператора се връща низ, който представлява текущата Типът на променливата. Използвате го, като пишете typeof(variable)или typeof variable. Връщайки се към предишния пример, можете да го използвате, за да проверите типа на променливата xна всеки етап:

var x = 12345; console.log(typeof x) // number x = 'string'; console.log(typeof x) // string x = { key: 'value' }; console.log(typeof x) // object

Това може да бъде полезно за проверка на типа променлива във функция и продължаване, както е подходящо.

Ето пример за функция, която може да приема променлива, която е низ или число:

function doSomething(x) { if(typeof(x) === 'string') { alert('x is a string') } else if(typeof(x) === 'number') { alert('x is a number') } }

Друг начин, по който typeofоператорът може да бъде полезен, е като гарантира, че дадена променлива е дефинирана, преди да се опитате да получите достъп до нея във вашия код. Това може да помогне за предотвратяване на грешки в програма, които могат да възникнат, ако се опитате да получите достъп до променлива, която не е дефинирана.

function(x){ if (typeof(x) === 'undefined') { console.log('variable x is not defined'); return; } // continue with function here... }

Изходът на typeofоператора не винаги може да бъде това, което очаквате, когато проверявате за номер.

Числата могат да се превърнат в стойността NaN (не число) по множество причини.

console.log(typeof NaN); //"number"

Може би сте се опитали да умножите число с обект, защото сте забравили да получите достъп до числото вътре в обекта.

var x = 1; var y = { number: 2 }; console.log(x * y); // NaN console.log(typeof (x * y)); // number

Когато проверявате за число, не е достатъчно да проверите изхода на typeofчисло, тъй като NaNсъщо

преминава този тест.

Тази функция проверява за числа и също така не позволява NaNстойността да премине.

function isNumber(data) { return (typeof data === 'number' && !isNan(data)); }

Дори да мислим, че това е полезен метод за проверка, трябва да бъдем внимателни, защото javascript има някои странни части и една от тях е резултат от typeofнад определени инструкции. Например в javascript много неща са просто objectsтака, че ще намерите.

var x = [1,2,3,4]; console.log(typeof x) // object console.log(typeof null) // object

Повече информация:

Документация за MDN за typeof