JavaScript typeof Operatori
typeof operatori
typeof operatori JavaScript o'zgaruvchisining ma'lumot turini qaytaradi.
Primitiv ma'lumot turlari
JavaScript-da primitiv qiymat — bu xususiyatlari yoki metodlari bo'lmagan yakka qiymat. JavaScript-da 7 ta primitiv ma'lumot turi mavjud:
- string
- number
- boolean
- bigint
- symbol
- null
- undefined
typeof operatori o'zgaruvchi yoki ifodaning turini qaytaradi:
typeof "John" // "string" qaytaradi
typeof ("John"+"Doe") // "string" qaytaradi
typeof 3.14 // "number" qaytaradi
typeof 33 // "number" qaytaradi
typeof (33 + 66) // "number" qaytaradi
typeof true // "boolean" qaytaradi
typeof false // "boolean" qaytaradi
typeof 1234n // "bigint" qaytaradi
typeof Symbol() // "symbol" qaytaradi
typeof x // "undefined" qaytaraditypeof null // "object" qaytaradiEslatma
JavaScript-da null primitiv qiymatdir. Lekin typeof object qaytaradi. Bu JavaScript-dagi ma'lum xato bo'lib, tarixiy sabablarga ega.
Murakkab ma'lumot turlari
Murakkab ma'lumot turi ko'p qiymatlarni va/yoki turli ma'lumot turlarini birga saqlashi mumkin.
JavaScript-da bitta murakkab ma'lumot turi bor: object
Massivlar, funksiyalar, to'plamlar va xaritalar kabi boshqa barcha murakkab turlar — faqat turli xil obyektlardir.
typeof operatori faqat ikki tur qaytaradi:
- object
- function
typeof {name:'John'} // "object" qaytaradi
typeof [1,2,3,4] // "object" qaytaradi
typeof new Map() // "object" qaytaradi
typeof new Set() // "object" qaytaradi
typeof function (){} // "function" qaytaradiEslatma
typeof operatori barcha turdagi obyektlar uchun object qaytaradi: obyektlar, massivlar, sanalar, to'plamlar, xaritalar. JavaScript obyektining massiv yoki sana ekanligini aniqlash uchun typeof dan foydalanib bo'lmaydi.
Massivni qanday aniqlash mumkin?
O'zgaruvchining massiv ekanligini bilish uchun ECMAScript 5 (2009) yangi metod belgiladi: Array.isArray():
// Massiv yaratish
const fruits = ["apples", "bananas", "oranges"];
Array.isArray(fruits);instanceof operatori
instanceof operatori obyekt belgilangan obyekt turining namunasi bo'lsa true qaytaradi:
// Sana yaratish
const time = new Date();
(time instanceof Date); // true// Massiv yaratish
const fruits = ["apples", "bananas", "oranges"];
(fruits instanceof Array); // true// Map yaratish
const fruits = new Map([
["apples", 500],
["bananas", 300],
["oranges", 200]
]);
(fruits instanceof Map); // true// Set yaratish
const fruits = new Set(["apples", "bananas", "oranges"]);
(fruits instanceof Set); // trueUndefined o'zgaruvchilar
Aniqlanmagan o'zgaruvchining typeof qiymati undefined:
typeof car; // "undefined"Qiymati bo'lmagan o'zgaruvchining typeof qiymati undefined. Qiymati ham undefined:
let car;
typeof car; // "undefined"Istalgan o'zgaruvchiga undefined qiymatini berish orqali bo'shatish mumkin. Turi ham undefined bo'ladi:
let car = "Volvo";
car = undefined; // Qiymati va turi undefinedBo'sh qiymatlar
Bo'sh qiymatning undefined bilan aloqasi yo'q. Bo'sh satr qonuniy qiymat va turga ega:
let car = "";
typeof car; // "string"Null
JavaScript-da null — "hech narsa". U mavjud bo'lmasligi kerak bo'lgan narsadir. Afsuski, JavaScript-da null ning ma'lumot turi object.
Obyektni null ga o'rnatish orqali bo'shatish mumkin:
// Obyekt yaratish
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null;
// Hozir qiymati null, lekin turi hali ham objectObyektni undefined ga o'rnatish orqali ham bo'shatish mumkin:
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined;
// Hozir qiymati va turi undefinedUndefined va Null orasidagi farq
undefined va null qiymat jihatidan teng, lekin tur jihatidan farq qiladi:
typeof undefined // "undefined"
typeof null // "object"
null === undefined // false
null == undefined // trueconstructor xususiyati
constructor xususiyati barcha JavaScript o'zgaruvchilari uchun konstruktor funksiyasini qaytaradi:
// function Object() {[native code]} qaytaradi:
{name:'John',age:34}.constructor
// function Array() {[native code]} qaytaradi:
[1,2,3,4].constructor
// function Date() {[native code]} qaytaradi:
new Date().constructor
// function Set() {[native code]} qaytaradi:
new Set().constructor
// function Map() {[native code]} qaytaradi:
new Map().constructor
// function Function() {[native code]} qaytaradi:
function () {}.constructorKonstruktor bilan obyektning massiv ekanligini tekshirish mumkin:
(myArray.constructor === Array);Konstruktor bilan obyektning sana ekanligini tekshirish mumkin:
(myDate.constructor === Date);Hammasi birga
typeof "John" // "string" qaytaradi
typeof ("John"+"Doe") // "string" qaytaradi
typeof 3.14 // "number" qaytaradi
typeof (33 + 66) // "number" qaytaradi
typeof NaN // "number" qaytaradi
typeof 1234n // "bigint" qaytaradi
typeof true // "boolean" qaytaradi
typeof false // "boolean" qaytaradi
typeof {name:'John'} // "object" qaytaradi
typeof [1,2,3,4] // "object" qaytaradi
typeof {} // "object" qaytaradi
typeof [] // "object" qaytaradi
typeof new Object() // "object" qaytaradi
typeof new Array() // "object" qaytaradi
typeof new Date() // "object" qaytaradi
typeof new Set() // "object" qaytaradi
typeof new Map() // "object" qaytaradi
typeof function () {} // "function" qaytaradi
typeof x // "undefined" qaytaradi
typeof null // "object" qaytaradiEslatma
NaN (Not a Number — Raqam emas) ning ma'lumot turi number!
void operatori
void operatori ifodani baholaydi va undefined qaytaradi. Bu operator ko'pincha void(0) yordamida undefined primitiv qiymatini olish uchun ishlatiladi:
<a href="javascript:void(0);">
Foydasiz havola
</a>
<a href="javascript:void(document.body.style.backgroundColor='red');">
Body fonini qizilga o'zgartirish uchun bosing
</a>