کلمات رزرو شده در جاوا اسکریپت
در بخش قبلی دیدیم که یکی از قوانینی که برای نامگذاری شناسهها باید رعایت شود، عدم استفاده از کلمات رزرو شده (Reserved Words) است. اما کلمات رزرو شده چه کلماتی هستند؟
در هر زبان برنامهنویسی تعدادی کلمهی از پیش تعریف شده وجود دارد که هر یک به منظور خاصی در آن زبان به کار برده میشوند. مثلاً برای تعریف یک ثابت از کلمهی const و برای تعریف یک تابع از کلمهی function استفاده میشود. به این کلمات در هر زبان برنامه نویسی کلمات رزرو شده یا کلمات کلیدی (Keywords) گفته میشود.
فهرست تمام کلمات رزرو شده در زبان جاوا اسکریپت (یا به طور دقیقتر ECMAScript) به شرح زیر است.
await , break , case , catch , class , const , continue
debugger , default , delete , do , else , enum , export
extends , false , finally , for , function , if , implements
import , in , instanceof , interface , let , new , null
package , private , protected , public , return , static
super , switch , this , throw , true , try , typeof , var
void , while , with , yield
اینها کلماتی هستند که به هیچ وجه به عنوان شناسه قابل استفاده نیستند و برای اهداف خاصی در زبان جاوا اسکریپت در نظر گرفته شدهاند.
اما کلمات دیگری نیز در جاوا اسکریپت وجود دارند که در عین حال که یک کلمهی رزرو شده نیستند. نباید از آنها به عنوان شناسه استفاده کنیم. یعنی استفاده از این کلمات به عنوان شناسه هیچ خطایی را در برنامه تولید نمیکند و برنامه به اجرای خود ادامه میدهد. اما ممکن است در شرایط خاص نتایج غیر منتظره و اشتباهی به وجود آورد. این نوع کلمات خود به چند دسته تقسیم میشود.
- کلماتی که در نسخههای قدیمی جزئی از کلمات رزرو شده بودند، ولی در حال حاضر یک کلمهی رزرو شده نیستند و از استاندارد حذف شدهاند.
abstract , boolean , byte , char , double , final , float , goto , int
long , native , short , synchronized , throws , volatile , transient
- کلماتی که نشاندهندهی نام اشیاء، خاصیتها یا متدهای پیشساخته (built-in) در ECMAScript هستند. (به مرور با این موارد آشنا خواهید شد)
arguments , Array , Date , eval , hasOwnProperty , Infinity
isFinite , isNaN , isPrototypeOf , length , Math , NaN , Number
Object , prototype , String , toString , undefined , valueOf
- کلماتی که نشاندهندهی نام اشیاء، خاصیتها یا متدهای پیشساخته در JavaScript هستند. (یعنی جزئی از ECMAScript نیستند)
alert , all , anchor , anchors , area , assign , blur , button , checkbox
clearInterval , clearTimeout , clientInformation , close , closed , confirm
constructor , crypto , decodeURI , decodeURIComponent , defaultStatus , document
element , elements , embed , embeds , encodeURI , encodeURIComponent , escape , event
fileUpload , focus , form , forms , frame , innerHeight , innerWidth , layer
layers , link , location , mimeTypes , navigate , navigator , frames , frameRate
hidden , history , image , images , offscreenBuffering , open , opener , option
outerHeight , outerWidth , packages , pageXOffset , pageYOffset , parent , parseFloat
parseInt , password , pkcs11 , plugin , prompt , propertyIsEnum , radio , reset
screenX , screenY , scroll , secure , select , self , setInterval , setTimeout , status
submit , taint , text , textarea , top , unescape , untaint , window
البته کلمات دستهی آخر از اهمیت کمتری برخوردار هستند (به جز چند مورد خاص مثل window و document). به همین دلیل بعضاً از این کلمات در نامگذاری شناسهها نیز استفاده میشود. اما بهتر است که از این کلمات به عنوان شناسه استفاده نشود.
همچنین توجه کنید که نیازی به حفظ کردن این کلمات ندارید، به مرور زمان موارد ضروری در ذهن شما ماندگار خواهند شد. ضمن اینکه اکثر ویرایشگرهای کد امروزی با تغییر دادن رنگ کلمات کلیدی زبان، تشخیص کلمات کلیدی زبانهای برنامهنویسی را بسیار ساده میکنند.