typeof (typeof)
«عملگر typeof» نوعِ مقدار را برمی گرداند. یعنی می گوید این متغیر از چه جنسی است. این کمک می کند کدت کمتر خطا دهد.
typeof برای مقادیر اولیه
«مقدار اولیه (Primitive)» ساده است و متد ندارد. typeof نوعشان را مستقیم می دهد.
typeof "John";
typeof ("John" + "Doe");
typeof 3.14;
typeof 33;
typeof (33 + 66);
typeof true;
typeof false;
typeof 1234n;
typeof Symbol();
typeof x;
نکته: typeof برای null مقدار «object» برمی گرداند. این یک باگ تاریخی است.
typeof null;
انواع پیچیده و نتیجه typeof
«نوع پیچیده (Complex)» می تواند چند مقدار نگه دارد. typeof فقط «object» یا «function» می دهد.
typeof { name: "John" };
typeof [1, 2, 3, 4];
typeof new Map();
typeof new Set();
typeof function () {};
نکته: با typeof نمی توانی آرایه یا تاریخ را تشخیص دهی.
تشخیص آرایه و نمونه ها
برای آرایه از Array.isArray استفاده کن. برای نوع های سازنده از instanceof کمک بگیر.
const fruits = ["apples", "bananas", "oranges"];
Array.isArray(fruits);
const time = new Date();
(time instanceof Date);
const nums = [1, 2, 3];
(nums instanceof Array);
const m = new Map();
(m instanceof Map);
const s = new Set(["a", "b"]);
(s instanceof Set);
undefined، رشته خالی و null
متغیر تعریف نشده typeof «undefined» دارد. رشته خالی مقدار دارد و نوعش «string» است. null یعنی نبود شیء.
typeof car;
let car2;
typeof car2;
let car3 = "Volvo";
car3 = undefined;
let empty = "";
typeof empty;
let obj = { firstName: "John", lastName: "Doe" };
obj = null;
// typeof null === "object"
typeof undefined;
typeof null;
(null === undefined);
(null == undefined);
ویژگی constructor
constructor سازنده شیء را برمی گرداند. می توانی نوع سازنده را مقایسه کنی.
({ name: "John", age: 34 }).constructor;
[1, 2, 3, 4].constructor;
new Date().constructor;
new Set().constructor;
new Map().constructor;
(function () {}).constructor;
const myArray = [];
(myArray.constructor === Array);
const myDate = new Date();
(myDate.constructor === Date);
همه کنار هم
چند نتیجه پرکاربرد typeof کنار هم. دقت کن NaN هم «number» است.
typeof NaN;
typeof {};
typeof [];
typeof new Object();
typeof new Array();
typeof new Date();
typeof new Set();
typeof new Map();
typeof function () {};
void برای مقدار undefined
عملگر «void» یک عبارت را ارزیابی می کند و همیشه undefined می دهد.
void 0;
void (0);
void (console.log("hi"));
// خروجی نهایی: undefined
گام های تمرینی
- برای چند مقدار مختلف typeof بگیر.
- فرق null و undefined را با === تست کن.
- آرایه را با Array.isArray بررسی کن.
- با instanceof نوع های Map و Set را چک کن.
جمع بندی سریع
- typeof نوع را سریع برمی گرداند.
- null باگ تاریخی: object می آید.
- آرایه با Array.isArray تشخیص داده می شود.
- برای نمونه ها از instanceof کمک بگیر.
- NaN هم «number» برمی گرداند.
نکته: ادامه مسیر: صفحه انواع داده و صفحه toString را ببین تا درک «عملگر typeof» کامل تر شود.