تعداد بازدید: 396

JavaScript DataStructure Part 1

ساختمان های داده در جاوا اسکریپت متفاوت از ساختمان های داده در زبان های دیگر است (مثلا php) . این ساختمان داده ها به صورت یک collection است که بر اساس ماهیت هر ساختمان داده یک سری متد برای manipulate کردن این ساختمان داده ایجاد شده است که به صورت یک متد روی آن اجرا می گردد.

سیستم لاراول نیز با الهام گرفتن از این عملکرد ساختمان داده های جدیدی را پیاده سازی کرده است و به صورت یک شئ بر می گرداند و در حقیقت collection های خاص برگشتی لاراول در ازای آرایه و غیره بسیار نزدیک به این ماهیت جاواسکریپت است.

Boolean

ساختمان داده Boolean یکی از دو مقدار true , false است . این ساختمان داده می تواند تبدیل شده ساختمان داده های دیگر مثل number , string است یا یک عبارت همیشه درست یا یک عبارت منطقی حاصل از عملگر های منطقی باشد.

var a = 1==1
var b = 10 > 4
var c = true
var d = !!(5+5)
var e = Boolean(1+5)

برای تبدیل عبارات به نوع داده Boolean می توان از عملگر !! , ! و یا تابع Boolean() استفاده کنید.

نوع داده Boolean می تواند حاصل عبارت های زیر باشد:

  • Comparisons and Conditions
  • Everything With a “Value” is True
  • Everything Without a “Value” is False
    • The Boolean value of -0 (minus zero) is false
    • The Boolean value of “” (empty string) is false
    • The Boolean value of undefined is false
    • The Boolean value of null is false
    • The Boolean value of NaN is false
  • JavaScript Booleans as Objects

Typeof متغیر Boolean نوع boolean است مگر این که شئ آن را ساخته باشید.

let x = false; 
let y = new Boolean(false); 
// typeof x returns boolean 
// typeof y returns object

Booleand Methods

Method Description
toString برای تبدیل به رشته این عبارست استفاده می شود . برعکس حالت تبدیل رشته به boolean

var a = true 
console.log(a) 
true 
a.toString() 
"true"
valueOf مقدار متغیر را برمی گرداند که همان true, false است . معمولاً توسط جاوا اسکریپت در پشت صحنه فراخوانی می شود و به طور واضح در کد نیست.

همچنین این ساختار یک سری ویژگی نیز در خود دارد. مهم ترین آن prototype است که به صورت همگانی در تمامی ساختمان داده های جاواسکریپت وجود دارد . این ویژگی این قابلیت را برای ما فراهم می کند که متد اختصاصی خودمان را در این سیستم قرار بدهیم (در نهایت این متد یکی از مقادیر prototype است ).

Boolean.prototype.myColor = function() {
  if (this.valueOf() == true) {
    return "green";
  } else {
    return = "red";
  }
}; 

حال پس از افزودن این متد در این متغیر قابلیت این را داریم که متد myColor را بیفزاییم .

let a = true;
let color = a.myColor();

در اجرای کد بالا چون مقدار برابر با true است green برمی گرداند.

همچنین می توان ویژگی های دیگری برای این سیستم در نظر گرفت. به طور مثال اگر لازم باشد یک ویژگی جدید با مقدار رشته ای به آن اضافه کنید.

Undefined

در جاواسکریپت متغیر بدون مقدار برابر است با undefined اگر مقدار Typeof آن را بگیرید برابر مقدار undefined است .

let name; //type is undefined value is undefined
let name = undefined // set value undefined directly

دقت داشته باشید که متغیر با مقدار “” یا همان empty string برابر undefined نیست و برابر string  است.

undefined متد (Methods) و ویژگی (Property) ندارد . بیشتر در شرط ها این نوع را چک می کنیم برای این که به متد خطا نخوریم . به طور مثال در یک بلوک کد قرار است یک متد را اجرا کنیم باید حتما چک کنیم که این متغیر مقدار داشته باشد.

const names = getNames();
if(undefined !== Typeof names){
    // do something
}

Null

عدم وجود از هر مقدار از یک شئ را به صورت عمد Null می نامیم . مقدار null  یا به صورت دستی با عبارت null تعیین می گردد و یا حاصل یک پردازش است :

let str = 'hello'
const m = str.match(/[aeiou]/gi);
//m is null
let name = null
//name is null

null برابر با متغیر تعریف نشده نیست . اگر متغیری در جاواسکریپت تعریف نشده باشد این موضوع باعث می گردد که به خطا برخورد کنیم:

// foo does not exist. It is not defined and has never been initialized:
foo; //ReferenceError: foo is not defined

حال این که تعریف متغیر به صورت null به این شکل است :

// foo is known to exist now but it has no type or value:
var foo = null;
foo; //null

نکته مهم این که اگر Typeof null را بگیرید مقدار object را برای شما برمی گرداند.

Null vs Undefined

Null و Undefined از نظر مقدار با هم برابر هستند اما از نظر نوع برابر نیستند . null از نظر ماهیت هیچ است (absent) اما مقدار undefined یعنی تعریف نشده .

typeof null          // "object" (not "null" for legacy reasons)
typeof undefined     // "undefined"
null === undefined   // false
null  == undefined   // true
null === null        // true
null  == null        // true
!null                // true
isNaN(1 + null)      // false
isNaN(1 + undefined) // true

برای اطمینان از null بودن یک عبارت می توانید از === استفاده کنید . همچنین کاراکتر ! هم می توانید کمک بگیرید:

if(null === pass){
   alert('password is required!')
}
/---------------------type 2
if(!pass){
   alert('password is required')
}

برای چک کردن این که یک عبارت null است به هیچ عنوان از null == Typeof variable استفادپه نکنید چون مقدار این عبارت برابر است با object ! .

مطالب مشابه

Browser Object Model – BOM

هر محیط اجرای جاوا اسکریپت شامل یک شئ global است که برنامه در آن جریان دارد . این شئ در جاوا اسکریپت بسته به نوع محیط...

Window Object Properties

شئ جاری در Browser Environment یک سری اطلاعات در قالب یک سری ساختمان داده در رابطه با اطلاعات صفحه وب فعلی از قبیل...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای JavaScript DataStructure Part 1

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *