آشنایی با جاوا اسکریپت

با سلام در خدمت شما هستیم با آموزش sysntax  جاوا اسکریپت :

جاوااسکریپت توسط برندن ایش از شرکت NetScape در سال ۱۹۹۵ ساخته شد. در ابتدا به عنوان یک زبان اسکریپت‌نویسی در کنار جاوا (که برای موارد پیچیده تر در طراحی وب در نظر گرفته میشد) مورد استفاده بود، ولی در پی نفوذ بسیار گسترده آن در وب و همچنین پشتیبانی پیش-ساخته آن در مرورگر ها، امروزه به مراتب بیشتر از جاوا در برنامه نویسی سمت-کاربر در وب به کار برده میشود. با این حال جاوااسکریپت فقط محدود به مرورگر های وب نمیشود. Node.js پروژه ایست که یک نسخه ی مستقل از اجراکننده ی موتور جاوااسکریپت V8 از گوگل کروم را در اختیار قرار میده که هر روزه درحال محبوب تر شدن نیز هست.

 // توضیحات همانند C هستند. توضیحات یک خطی با دو خط مورب شروع میشوند.,

/* و توضیحات چند خطی با خط مورب-ستاره شروع، و با ستاره-خط مورب ختم میشوند */

آخر هر دستور از ; استفاده میشه.

۱. اعداد، رشته ها و عملگرها

جاوااسکریپت فقط یک نوع عدد دارد و آن عدد اعشاری ۶۴ بیتی IEEE 754 است.

نترسید! و نگران اعداد صحیح نباشید! این اعداد اعشاری دارای ۵۴ بیت مانتیس هستند که قابلیت ذخیره ی

دقیق اعداد صحیح تا مقدار تقریبی ۹×۱۰¹⁵ را دارند.

تمامی عملگر های محاسباتی آن طوری که انتظارش را دارید عمل خواهند کرد.

و این حتی شامل تقسیم هم میشود.

عملگر های بیتی هم به همین شکل. وقتی از یک عملگر بیتی استفاده میکنید، عدد اعشاری شما

به عدد صحیح علامت دار *تا ۳۲ بیت* تبدیل میشود.

عملیات داخل پرانتز تقدم بالاتری دارند.

سه مقدار خاص وجود دارند که در واقع مقادیر عددی نیستند:

مقادیر بولی هم تعریف شده هستند:

رشته ها با آپستروف و یا گیومه تعریف میشوند.

و منفی کردن شرط با علامت تعجب

تساوی دو مقدار با ==

و عدم تساوی با !=

و سایر عمیلات های مقایسه

رشته ها با علامت جمع به یکدیگر متصل میشوند

و با علامت برگتر و یا کوچکتر با یکدیگر مقایسه میشوند.

نوع متغیر برای عملیات مقایسه تطبیق داده میشود

مگر اینکه از سه مساوی استفاده شود!

با استفاده از charAt میتوانید به کارکتر های یک رشته دسترسی پیدا کنید.

از null برای نشان دادن عمدی مقدار هیج استفاده میشود.

و از undefined برای نشان دادن اینکه در حال حاظر مقدار موجود نمی باشد، هرچند خود undefined یک مقدار محسوب میشود.

false, null, undefined, NaN, 0 و “” مقدار نادرست و هر چیز دیگر مقدار درست طلقی میشوند.

توجه داشته باشید که ۰ نادرست و “۰” درست طلقی میشوند حتی در عبارت ۰==“۰”.

۲. متغیر ها، آرایه ها و شئ ها

متغیر ها با کلید واژه var تعریف میشوند. اشیا در جاوااسکریپت دارای نوع پویا هستند،

بدین شکل که برای تعریف نیازی به مشخص کردن نوع متعیر نیست.

برای مقدار دهی از علامت مساوی استفاده میشود.

اگر کلید واژه var را قرار ندهید، هیچ خطایی دریافت نخواهید کرد…

در عوض متغیر شما در گستره ی کل برنامه تعریف شده خواهد بود.

متغیر هایی که تعریف شده ولی مقدار دهی نشوند، دارای مقدار undefined خواهند بود.

برای اعمال عملگر های محاسباتی، میانبر هایی وجود دارند:

حتی از این هم کوتاهتر برای اضافه یا کم کردن یک عدد با مقدار یک.

آرایه ها در واقع لیستی مرتب شده از مقادیر مختلف از هر نوعی هستند.

به اعضای یک آرایه میتوان از طریق قرار دادن کروشه در جلوی نام آن دسترسی پیدا کرد.

نمایه ی آرایه از صفر شروع میشود.

آرایه ها ناپایدار و دارای طول قابل تغییر هستند

در جاوااسکریپت، اشیاء چیزی شبیه دیکشنری و یا نقشه در زبان های دیگر هستند:

یک مجموعه ی نامرتب از جفت های کلید-مقدار.

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

اعضای یک شئ را نیز میتوانید با استفاده از کروشه در مقابل نام آنها استخراج کنید.

…و یا از طریق نقطه در صورتی که اسم عضو مورد نظر اسم معتبری برای اسم گزاری باشد.

اشیاء ناپایدار و قابل اضافه کردن عضو جدید هستند.

اگر سعی کنید عضوی را که وجود ندارد استخراج کنید، مقدار undefined را دریافت خواهید کرد.

۳. منطق و ساختار کنترل

ساختار if به شکلی که انتظارش را دارید کار میکند.

و همینطور حلقه while

حلقه do-while شبیه while است با این تفاوت که حداقل یکبار اجرا میشود.

حلقه for همانند زبان C و جاوا کار می کند.

مقدار دهی اولیه; شرط ادامه; چرخش حلقه

عملگر && و || به ترتیب “و” و “یا” ی منطقی هستند.

از || همچنین میتوان برای تعیین مقدار پیشفرض استفاده کرد.

۴. توابع و مفاهیم گستره و بستار

توابع در جاوااسکریپت با استفاده از کلیدواژه ی function تعریف میشوند.

توابع در جاوااسکریپت نوعی شئ پایه محسوب میشوند، بنابر این می توانید آنها را به اشیاء مختلف

اضافه کنید و یا به عنوان پارامتر به توابع دیگر ارسال کنید.

– برای مثال وقتی که با یک رویداد کار میکنید.

توجه کنید که setTimeout تابعی تعریف شده در جاوااسکریپت نیست، ولی مرورگر ها و node.js از آن پشتیبانی میکنند.

توابع نیازی به داشتن اسم ندارند. برای مثال وقتی تابعی را به تابعی دیگر ارسال میکنید

میتوانید آنرا به صورت بینام تعریف کنید.

توابع دارای محدوده ی متغیر های خود هستند.

بر خلاف دیگر ساختار ها – مانند if

به همین دلیل الگوی خاصی به نام “تابعی که بلافاصله صدا زده میشود” پدید آمده

تا از اضافه شدن متغیر های قسمتی از برنامه به گستره ی کلی برنامه جلوگیری شود.

یکی از برترین ویژگی های جاوااسکریپت مفهومی با نام بستار است

بدین شکل که اگر تابعی درون تابع دیگری تعریف شود، تابع درونی به تمام متغیر های تابع خارجی دسترسی

خواهد داشت، حتی بعد از اینکه تابع خارجی به اتمام رسیده باشد.

۵. دیگر اشیاء، سازنده ها و پیش‌نمونه ها

اشیاء میتوانند تابع داشته باشند.

وقتی تابع یک شی صدا زده می شود، تابع میتواند به سایر مقادیر درون آن شی

از طریق کلید واژه ی this دسترسی داشته باشد.

اینکه مقدار this چه باشد بستگی به این دارد که تابع چگونه صدا زده شود

نه اینکه تابع کجا تعریف شده است.

بنابر این تابع بالا اگر بدین شکل صدا زده شود کار نخواهد کرد

به همین شکل، تابعی که در جای دیگر تعریف شده را میتوانید به یک شی الحاق کنید

و بدین ترتیب تابع میتواند به مقادیر درون شی از طریق this دسترسی پیدا کند.

اگر تابعی با کلید new صدا زده شوند، شی جدیدی ایجاد شده و تابع در گستره ی آن صدا زده میشود.

توابعی که بدین شکل صدا زده شوند در واقع نقش سازنده را ایفا می کنند.

تمامی اشیاء در جاوااسکریپت دارای یک پیش نمونه هستند

به شکلی که اگر تابع صدا زده شده بر روی شی مستقیما روی آن تعریف نشده باشد

اجرا کننده ی برنامه در لیست پیش نمونه به دنبال آن تابع خواهد گشت

برخی اجرا کننده های جاوااسکریپت به شما اجازه ی دسترسی به پیش نمونه های یک شی را از

طریق عضو جادویی __proto__ میدهند.

هرچند این به شناخت پیش نمونه ها کمک میکند ولی در حیطه ی جاوااسکریپت استاندارد قرار نمیگیرد.

در ادامه شکل استاندارد پیش نمونه ها مورد بررسی قرار میگیرند.

این موضوع در مورد توابع نیز صدق میکند.

اگر عضو مورد نظر در پیش نمونه ی شی یافت نشود، پیش نمونه ی پیش نمونه جستجو شده و الی آخر

توجه داشته باشید که پیش نمونه ها کپی نمی شوند و هر شی جدید به پیش نمونه موجود اشاره میکند

بدین ترتیب اگر تابعی به پیش نمونه اضافه شود تمامی اشیاء میتوانند به آن دسترسی پیدا کنند.

پیش تر اشاره شد که __proto__ راه استانداردی برای دسترسی به پیش نمونه نیست و هیچ استانداردی نیز برای دسترسی به پیش نمونه ی یک شی موجود پیش بینی نشده است

ولی دو راه برای ارائه پیش نمونه برای اشیاء جدید وجود دارد.

اولی وقتیست که از تابع Object.create استفاده میشود – که اخیرا به زبان اضافه شده است و بنابراین بر روی همه ی پیاده سازی های آن وجود ندارد.

راه دوم – که همه جا قابل استفاده است – مربوط به سازنده ها می شود.

سازنده ها دارای عضوی با نام prototype هستند. این پیش نمونه ی خود سازنده نیست

بلکه پیش نمونه ایست که به تمامی اشیاء ساخته شده توسط این سازنده الحاق میشود.

رشته ها و سایر سازنده های پیش ساخته ی زبان نیز دارای این ویژگی هستند.

به جز این که این سازنده ها دقیقا مانند سازنده های دیگر نیستند.

ولی به هر حال هم اشیاء عادی و هم اشیاء پیش ساخته هر دو در داشتن پیش نمونه مشترک هستند

بنابر این شما میتوانید ویژگی و تابع جدیدی به رشته ها – به عنوان مثال – اضافه کنید.

گاها به از این خاصیت با عنوان پلی فیل و برای اضافه کردن ویژگی های جدید به مجموعه ای از اشیاء فعلی زبان استفاده میشود

که کاربرد فراوانی در پشتیبانی از نسخه های قدیمیتر مرورگر ها دارد.

برای مثال، پیشتر اشاره کردیم که Object.create در نسخه های جدید پشتیبانی نشده است

ولی میتوان آن را به صورت پلی فیل استفاده کرد.


پست های مرتبط

   دیدگاه ها

یک دیدگاه

  1. رضا طاهری گفت:

    بهنام جان عالی بود

ارسال نظرات

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