typeof در JavaScript

typeof در JavaScript

در جاوااسکریپت 5 نوع داده مختلف وجود دارد که می‌توانند شامل ارزش باشند:

  • string
  • number
  • boolean
  • object
  • function

6 نوع شیء وجود دارد:

  • Object
  • Date
  • Array
  • String
  • Number
  • Boolean

و 2 نوع داده که نمی‌توانند شامل ارزش باشند استفاده کنید:

  • null
  • undefined

آیاژنراتور typeof

شما می‌توانید از typeof آیاژنراتور برای تعیین نوع داده متغیرهای جاوااسکریپت استفاده می‌شود.

مثال

typeof "Bill"                 // بازمی‌گردد به "string"
typeof 3.14                   // بازمی‌گردد به "number"
typeof NaN                    // بازمی‌گردد به "number"
typeof false                  // بازمی‌گردد به "boolean"
typeof [1,2,3,4]              // بازمی‌گردد به "object"
typeof {name:'Bill', age:19}  // بازمی‌گردد به "object"
typeof new Date()             // بازمی‌گردد به "object"
typeof function () {}         // بازمی‌گردد به "function"
typeof myCar                  // بازمی‌گردد به "undefined" *
typeof null                   // بازمی‌گردد به "object"

تست کنید

لطفاً توجه داشته باشید:

  • نوع داده NaN یک عدد است
  • نوع داده آرایه یک شیء است
  • نوع داده تاریخ یک شیء است
  • نوع داده null object است
  • نوع داده متغیرهای تعریف نشده undefined *
  • نوع داده متغیرهای بدون تعریف نیز undefined *

شما نمی‌توانید از typeof برای تعیین اینکه یک شیء جاوااسکریپت یک آرایه (یا تاریخ) است یا خیر.

تاریخ اولیه

ارزش داده‌های اولیه به معنای یک ارزش داده ساده است که هیچ ویژگی و روشی به آن متصل نیست.

typeof آیاژنراتور می‌تواند یکی از نوع‌های نوع اولیه زیر را بازگرداند:

  • string
  • number
  • boolean
  • undefined

مثال

typeof "Bill"              // بازگشت "string"
typeof 3.14                // بازگشت "number"
typeof true                // بازگشت "boolean"
typeof false               // بازگشت "boolean"
typeof x                   // بازگشت "undefined" (اگر x هیچ ارزشی ندارد)

تست کنید

داده پیچیده

typeof عملگر می‌تواند یکی از دو نوع داده پیچیده را بازگرداند:

  • function
  • object

typeof عملگر به اشیاء، آرایه‌ها و null بازگشت می‌دهد "object".

typeof عملگر به تابع‌ها بازگشت نمی‌دهد "object".

مثال

typeof {name:'Bill', age:19} // بازگشت "object"
typeof [1,2,3,4]             // بازگشت "object" (نه "array"، توجه کنید به مثال زیر)
typeof null                  // بازگشت "object"
typeof function myFunc(){}   // بازگشت "function"

تست کنید

typeof عملگر به آرایه‌ها بازگشت می‌دهد "object"، زیرا در JavaScript آرایه‌ها اشیاء هستند.

نوع داده typeof

typeof عملگر نیست. این فقط یک عملگر است. عملگر (+ - * /) هیچ نوع داده‌ای ندارد.

اما،typeof عملگر همیشهزیر نویسی باز می‌گرداندشامل نوع عملگرها است.

ویژگی constructor

constructor ویژگی‌ها تمام متغیرهای JavaScript را به تابع ساختاردهی تبدیل می‌کنند.

مثال

"Bill".constructor                // بازگشت function String()  {[native code]}
(3.14).constructor                // بازگشت function Number()  {[native code]}
false.constructor                 // بازگشت function Boolean() {[native code]}
[1,2,3,4].constructor             // بازمی‌گردد به function Array()   {[native code]}
{name:'Bill',age:19}.constructor  // بازمی‌گردد به function Object()  {[native code]}
new Date().constructor            // بازمی‌گردد به function Date()    {[native code]}
function () {}.constructor        // بازمی‌گردد به function Function(){[native code]}

تست کنید

می‌توانید با بررسی ویژگی constructor مشخص کنید که آیا یک شیء "Array" به معنای

مثال

function isArray(myArray) {
  return myArray.constructor.toString().indexOf("Array") > -1;
}

تست کنید

یا می‌توانید ساده‌تر بررسی کنید که آیا یک شیءوظیفه آرایه:

مثال

function isArray(myArray) {
  return myArray.constructor === Array;
}

تست کنید

می‌توانید با بررسی ویژگی constructor مشخص کنید که آیا یک شیء "Date" به معنای

مثال

function isDate(myDate) {
  return myDate.constructor.toString().indexOf("Date") > -1;
}

تست کنید

یا می‌توانید ساده‌تر بررسی کنید که آیا یک شیءوظیفه تاریخ:

مثال

function isDate(myDate) {
  return myDate.constructor === Date;
}

تست کنید

Undefined

در JavaScript، مقدار متغیری که هیچ مقداری ندارد undefinedاست. نوع نیز undefinedتبدیل کنید.

مثال

let car;    // مقدار undefined است، نوع آن نیز undefined است.

تست کنید

با تنظیم مقدار آن به undefined، می‌تواند هر متغیری را خالی کند. نوع نیز undefinedتبدیل کنید.

مثال

car = undefined;    // مقدار undefined است، نوع آن نیز undefined است.

تست کنید

مقدار خالی

مقدار خالی با undefined بی‌ربط است.

یک رشته خالی هم مقدار قانونی دارد و هم نوع.

مثال

let car = "";    // مقدار "" است، نوع آن "string" است.

تست کنید

Null

در JavaScript، null که

متاسفانه در JavaScript،null نوع داده‌ای که در اینجا استفاده می‌شود یک شیء است.

می‌توانید آن را به عنوان یک باگ در JavaScript در نظر بگیرید،typeof null این یک شیء است. نوع باید nullتبدیل کنید.

می‌توانید شیء را به null برای خالی کردن یک شیء:

مثال

let person = {firstName:"Bill", lastName:"Gates", age:19, eyeColor:"blue"};
person = null;    // اکنون ارزش null است اما نوع همچنان شیء است

تست کنید

شما همچنین می‌توانید شیء را به undefined برای خالی کردن یک شیء:

مثال

let person = {firstName:"Bill", lastName:"Gates", age:19, eyeColor:"blue"};
person = undefined;   // اکنون ارزش و نوع هر دو ناشناخته هستند

تست کنید

تفاوت بین undefined و null

undefined و null ارزش‌ها برابر هستند اما نوع‌ها متفاوت هستند:

typeof undefined           // undefined
typeof null                // شیء
null === undefined         // غلط
null == undefined          // درست

تست کنید