Skip to content

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:

js
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" qaytaradi
js
typeof null           // "object" qaytaradi

Eslatma

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
js
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" qaytaradi

Eslatma

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():

js
// Massiv yaratish
const fruits = ["apples", "bananas", "oranges"];
Array.isArray(fruits);

instanceof operatori

instanceof operatori obyekt belgilangan obyekt turining namunasi bo'lsa true qaytaradi:

js
// Sana yaratish
const time = new Date();
(time instanceof Date);  // true
js
// Massiv yaratish
const fruits = ["apples", "bananas", "oranges"];
(fruits instanceof Array);  // true
js
// Map yaratish
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);
(fruits instanceof Map);  // true
js
// Set yaratish
const fruits = new Set(["apples", "bananas", "oranges"]);
(fruits instanceof Set);  // true

Undefined o'zgaruvchilar

Aniqlanmagan o'zgaruvchining typeof qiymati undefined:

js
typeof car;  // "undefined"

Qiymati bo'lmagan o'zgaruvchining typeof qiymati undefined. Qiymati ham undefined:

js
let car;
typeof car;  // "undefined"

Istalgan o'zgaruvchiga undefined qiymatini berish orqali bo'shatish mumkin. Turi ham undefined bo'ladi:

js
let car = "Volvo";
car = undefined;  // Qiymati va turi undefined

Bo'sh qiymatlar

Bo'sh qiymatning undefined bilan aloqasi yo'q. Bo'sh satr qonuniy qiymat va turga ega:

js
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:

js
// Obyekt yaratish
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

person = null;
// Hozir qiymati null, lekin turi hali ham object

Obyektni undefined ga o'rnatish orqali ham bo'shatish mumkin:

js
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

person = undefined;
// Hozir qiymati va turi undefined

Undefined va Null orasidagi farq

undefined va null qiymat jihatidan teng, lekin tur jihatidan farq qiladi:

js
typeof undefined     // "undefined"
typeof null          // "object"

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

constructor xususiyati

constructor xususiyati barcha JavaScript o'zgaruvchilari uchun konstruktor funksiyasini qaytaradi:

js
// 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 () {}.constructor

Konstruktor bilan obyektning massiv ekanligini tekshirish mumkin:

js
(myArray.constructor === Array);

Konstruktor bilan obyektning sana ekanligini tekshirish mumkin:

js
(myDate.constructor === Date);

Hammasi birga

js
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" qaytaradi

Eslatma

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:

html
<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>