آموزش مقدارها در جاوا اسکریپت
جاوا اسکریپت مقادیر(value) مختلفی دارد که عبارتند از:
- بولین(boolean)
- اعداد(number)
- رشته ها(string)
- آرایه ها(array)
- و دیگر موارد
تمام مقادیر جاوا اسکریپت دارای پروپرتی(properties) هستند. هر پروپرتی، یک نام و یک مقدار دارد. پروپرتی ها چیزی مثل متغیرها هستند، که در داخل اشیاء تعریف می شوند. برای دسترسی به یک پروپرتی، از عملگر نقطه(.) استفاده می شود. مثال:
value.propKey
بعنوان مثال، رشته ی 'abc' دارای یک پروپرتی به نام length یا طول رشته است، که به صورت زیر می توانیم از آن استفاده کنیم:
> var str = 'abc';
> str.length
3
عبارت بالا را می توانیم به صورت زیر نیز بنویسیم:
> 'abc'.length
3
از علامت نقطه برای انتساب یک مقدار به یک پروپرتی نیز استفاده می شود:
> var obj = {}; // ایجاد یک شیء خالی
> obj.foo = 123; // و انتساب مقدار 123 به آن foo ایجاد پروپرتی
123
> obj.foo
123
برای فراخوانی متدها نیز می توانیم از آن استفاده کنیم:
> 'hello'.toUpperCase()
'HELLO'
در مثال بالا، ما برای مقدار 'hello' متد ()toUpperCase را اجرا کرده ایم و حروف آن را به بزرگ تغییر داده ایم.
بررسی مقادیر اولیه و اشیاء در جاوا اسکریپت
مقادیر اولیه(primitive ) در جاوا اسکریپت عبارتند از:
- بولین ها(boolean)
- اعداد(number)
- رشته ها(string)
- null
- undefined
بقیه ی مقادیر در جاوا اسکریپت، شیء(object) محسوب می شوند. یکی از تفاوت های عمده ی مقادیر اولیه و اشیاء چگونگی مقایسه ی آنها است. هر شیء، یک هویت واحد دارد و تنها برابر با خودش است:
> var obj1 = {}; // یک شیء خالی
> var obj2 = {}; // یک شیء خالی دیگر
> obj1 === obj2
false
> obj1 === obj1
true
اما درست برخلاف اشیاء، تمام مقادیر اولیه ای که مقدار مشابهی دارند، یکسان در نظر گرفته می شوند:
> var prim1 = 123;
> var prim2 = 123;
> prim1 === prim2
true
در بخش های بعدی به طور کامل مقادیر اولیه و اشیاء را مورد بررسی قرار می دهیم.
بررسی مقادیر اولیه در جاوا اسکریپت
در لیست زیر تمام مقادیر اولیه آورده شده اند:
- بولین ها(Boolean)، یعنی مقادیر true و false
- عدد ها(Numbers)، مثل 1371 و 1.351
- رشته ها(String)، مثل 'abc' یا "abc"
- undefined و null
مقادیر اولیه دو ویژگی دارند که عبارتند از:
- می توانند با مقدارها مقایسه شوند
> 3 === 3
true
> 'abc' === 'abc'
true
- همیشه تغییر ناپذیر هستند
اما پروپرتی ها را نمی توانیم تغییر دهیم یا با یکدیگر جمع کنیم یا حذف کنیم.
> var str = 'abc';
> str.length = 1; // را تغییر دهیم length سعی می کنیم پروپرتی
> str.length // هیچ تغییری حاصل نشد
3
> str.foo = 3; // ایجاد کنیم foo سعی می کنیم یک پروپرتی به نام
> str.foo // تاثیری نداشت، این پروپرتی ناشناخته است
undefined
فراخوانی یک پروپرتی ناشناخته همواره مقدار undefined را برمی گرداند.
بررسی اشیاء در جاوا اسکریپت
تمام مقادیر غیر اولیه، یک نوع شیء محسوب می شوند. متداول ترین نوع اشیاء عبارتند از:
- اشیاء ساده، که می توانند با استفاده از لفظ شیء ایجاد شوند.
{
firstName: 'Jane',
lastName: 'Doe'
}
در شیء بالا دو پروپرتی وجود دارد. پروپرتی firstName که مقدار آن Jane است و پروپرتی lastName که مقدار آن Doe است.
- آرایه ها که می توانند توسط لفظ آرایه(یعنی علامت کروشه) ایجاد شوند:
[ 'apple', 'banana', 'cherry' ]
آرایه ی بالا سه عنصر دارد که می توانیم از طریق اندیس های عددی به آنها دسترسی داشته باشیم. بعنوان مثال اندیس apple برابر با 0 است.
- عبارت های منظم که می توانند توسط لفظ عبارت منظم(یعنی اسلش ها) ایجاد شوند:
/^a+b+$/
اشیاء از دو خصوصیت زیر برخوردار هستند:
- هر شیء با مرجع و مبدا خود مقایسه می شود
هر شیء ای یک هویت خاص دارد که با دیگر اشیاء متفاوت است. و نسبت به مرجع و مبدا خود مقایسه می شود. مثال:
> {} === {} // این دو شیء با یکدیگر متفاوت هستند
false
> var obj1 = {};
> var obj2 = obj1;
> obj1 === obj2
true
- اشیاء به طور پیش فرض تغییر پذیر هستند
ما به راحتی می توانیم پروپرتی ها را با یکدیگر جمع کنیم یا تغییر دهیم یا حذف کنیم.
> var obj = {};
> obj.foo = 123; // obj به شیء foo اضافه کردن یک پروپرتی به نام
> obj.foo
123
بررسی نامقدارهای undefined و null در جاوا اسکریپت
جاوا اسکریپت دو نامقدار به نام undefined و null دارد.
- undefined به معنی "هیچ مقداری" یا "no value" است. مثلا متغیرهایی که مقداردهی اولیه نشده اند، undefined محسوب می شوند.
> var foo;
> foo
undefined
اگر یک پارامتر را فراموش کنیم، undefined محسوب می شود. به مثال زیر توجه کنید:
> function f(x) { return x }
> f()
undefined
اگر یک پروپرتی در شیء ای وجود نداشته باشد و ما آن را فراخوانی کنیم، با undefined مواجه می شویم:
> var obj = {}; // یک شیء خالی
> obj.foo
undefined
- null به معنی "شیء ای وجود ندارد" یا "no object" است. وقتی که یک شیء را انتظار داشته باشیم اما یک شیء به ما داده نشود، از نامقدار null استفاده می شود.
نکته: undefined و null هیچ پروپرتی ای ندارند و حتی هیچ متد استانداردی مثل ()toString ندارند.
بررسی اینکه آیا مقداری برابر با undefined یا null باشد
تابع ها معمولا به ما امکان می دهند تا بررسی کنیم که یک مقدار نامعلوم undefined است یا null. برای انجام این کار می توانیم طبق مثال زیر عمل کنیم:
if (x === undefined || x === null) {
...
}
بعنوان یک روش خلاصه تر، می توانیم به صورت زیر عمل کنیم. زیرا هردوی undefined و null بعنوان false در نظر گرفته می شوند:
if (!x) {
...
}
نکته: false و 0 و NaN و '' معمولا false در نظر گرفته می شوند.
دسته بندی مقادیر با استفاده از typeof و instanceof
برای دسته بندی مقادیر، دو عملگر زیر وجود دارند:
- typeof که عمدتاً برای مقادیر اولیه مورد استفاده قرار می گیرد.
- instanceof که برای اشیاء مورد استفاده قرار می گیرد.
برای استفاده از typeof به صورت زیر عمل می کنیم:
typeof value
این عملگر، یک رشته را برمی گرداند که نوع مقدار مورد نظر را به ما معرفی می کند. به مثال های زیر توجه کنید:
> typeof true
'boolean'
> typeof 'abc'
'string'
> typeof {} // یک شیء خالی
'object'
> typeof [] // یک آرایه خالی
'object'
در جدول زیر، تمام مقادیر typeof مشخص شده اند:
| # | عملوند | نتیجه |
|---|---|---|
| 1 | undefined | 'undefined' |
| 2 | null | 'object' |
| 3 | مقدار بولین | 'boolean' |
| 4 | مقدار عددی | 'number' |
| 5 | مقدار رشته ای | 'string' |
| 6 | تابع یا function | 'function' |
| 7 | تمام دیگر مقادیر نرمال | 'object' |
| 8 | مقدار تولید شده توسط انجین | انجین های جاوا اسکریپت مجاز هستند مقادیری ایجاد کنند که typeof رشته های دلخواهی را برگرداند(یعنی متفاوت با تمام نتیجه های لیست شده در این جدول) |
طبق جدول بالا دستور typeof null مقدار 'object' را برمی گرداند؛ این یک باگ است که نمی تواند تصحیح شود، زیرا کدههای موجود را با شکست(break) مواجه می کند. بنابراین null یک شیء یا object نیست.
دستور instanceof به صورت زیر مورد استفاده قرار می گیرد:
value instanceof Constr
در دستور instanceof اگر value یک شیء(object ) باشد که توسط کانستراکتور Constr ایجاد شده باشد، مقدار true را برمی گرداند. بعداً در ص28 در بخش کانستراکتورها بیشتر در مورد آن صحبت خواهیم نمود. به مثال های زیر توجه کنید:
> var b = new Bar(); // Bar شیء ایجاد شده توسط کانستراکتور
> b instanceof Bar
true
> {} instanceof Object
true
> [] instanceof Array
true
> [] instanceof Object // است Object آرایه یک زیر-کانستراکتور
true
> undefined instanceof Object
false
> null instanceof Object
false
- بازدید: 561
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.