در این مقاله، نحوه تعریف ثابت ها در جاوا اسکریپت را با استفاده از کلمه کلیدی const خواهید آموخت.

ES6 فراهم می کند راه جدیداعلان های ثابت با استفاده از کلمه کلیدی const. کلمه کلیدی const یک ارجاع به یک مقدار فقط خواندنی ایجاد می کند.

Const VARIABLENAME = مقدار;

طبق قرارداد، شناسه های ثابت در جاوا اسکریپت با حروف بزرگ هستند.

کلمه کلیدی const شبیه کلمه کلیدی let است که متغیرهایی با محدوده بلوک ایجاد می کند، اما مقادیر اعلام شده با const را نمی توان تغییر داد.

متغیرهای اعلام شده با کلمه کلیدی let قابل تغییر هستند. این بدان معنی است که شما می توانید مقادیر آنها را در هر زمان تغییر دهید، همانطور که در مثال زیر نشان داده شده است.

اجازه دهید v = 10;
v = 20;
v = v + 5;
ورود به سیستم کنسول (v); // 35

با این حال، متغیرهای ایجاد شده با کلمه کلیدی const غیر قابل تغییر هستند. به عبارت دیگر، شما نمی توانید آنها را دوباره اختصاص دهید ارزش های مختلف. تلاش برای تخصیص مجدد یک متغیر ثابت منجر به TypeError می شود.

مالیات بر هزینه = 0.1;
مالیات = 0.2 ; // TypeError

همچنین متغیری که با کلمه کلیدی const اعلان می شود باید بلافاصله با مقدار مقداردهی اولیه شود. مثال زیر یک SyntaxError (خطای نحوی) را به دلیل گم شدن مقدار اولیه در یک اعلان متغیر ثابت ایجاد می کند.

Const RED; // اشتباه نوشتاری

همانطور که قبلا ذکر شد، دقیقاً مانند متغیرهای اعلام شده با کلمه کلیدی let، متغیرهای اعلام شده با کلمه کلیدی const دارای محدوده بلوکی هستند.

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

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

اعلان متغیرها در جاوا اسکریپت

نام متغیرها در جاوا اسکریپت می تواند شامل حروف، اعداد، علامت $ و علامت _ باشد و نام متغیر نمی تواند با یک عدد شروع شود. به خاطر داشته باشید که جاوا اسکریپت به حروف بزرگ و کوچک حساس است و a1 و A1 متغیرهای متفاوتی هستند. سیریلیک توصیه نمی شود، اگرچه ممکن است.
متغیرها در جاوا اسکریپت با کلمه کلیدی var اعلان می شوند:

Var Peremennaya_1 var Peremennaya_2

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

اختصاص یک مقدار به متغیرها

اختصاص یک مقدار به متغیرهای اعلام شده در جاوا اسکریپت:

Peremennaya_1 = 25 Peremennaya_2 = "متن اختصاص داده شده در گیومه های مستقیم قرار دارد"

شما می توانید بلافاصله پس از اعلان یک مقدار به متغیرها اختصاص دهید:

Var Peremennaya_1 = 25 var Peremennaya_2 = "ما متن اختصاص داده شده را در گیومه های مستقیم قرار می دهیم"

مقدار یک متغیر در جاوا اسکریپت می تواند در طول اجرای برنامه تغییر کند. هنگام نوشتن متن روی یک متغیر، باید آن را در گیومه های مستقیم قرار دهید.

متغیرهای محلی و جهانی

اگر متغیری در یک تابع اعلان شود، آنگاه محلی است و فقط در آن تابع قابل دسترسی (قابل مشاهده) خواهد بود. هنگامی که یک تابع خارج می شود، متغیرهای محلی در جاوا اسکریپت از بین می روند، بنابراین می توانید از متغیرهایی با نام یکسان در توابع مختلف استفاده کنید.

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

ثابت ها در جاوا اسکریپت

ثابت ها به گونه ای طراحی شده اند که وقتی مجبور هستید از مقادیر یا عبارات تکراری استفاده کنید، کار با کد را آسان تر می کند. کافی است یک بار برای ثابت مقداری تعیین کنید و می توانید هر چقدر که دوست دارید از آن استفاده کنید و آن را در کد برنامه های خود قرار دهید. جاوا اسکریپت کلمه کلیدی برای اعلان ثابت ندارد، به جای ثابت از متغیرهای معمولی استفاده می شود. برای تشخیص ثابت ها از متغیرها، معمولاً آنها را نشان می دهند حروف بزرگ، در صورت لزوم از خط زیر استفاده کنید:

Var DRUG_CHELOVEKA = "سگ"

مثال داده شده از یک ثابت کاملاً کامل نیست، زیرا کلمه "سگ" از قبل به راحتی قابل یادآوری است و در صورت لزوم درج می شود. می‌توانید از ثابت‌ها در جاوا اسکریپت برای نوشتن و جای‌گذاری مقادیر پیچیده‌تر، مانند کدهای سخت به خاطر سپردن، مجموعه کاراکترها، متن طولانی، آدرس‌های وب، آدرس‌ها استفاده کنید. پست الکترونیک, شماره تلفن ها، ضرایب مختلف.

در جاوا اسکریپت، ثابت ها را می توان مانند متغیرها بازنویسی کرد، اما اگر این کار را انجام دهید، معنای ثابت ها از بین می رود.

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

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

تعریف تابع

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

تابع nameOfFunction() (
// کدی که باید اجرا شود
}

اعلان تابع با کلمه کلیدی تابع و سپس نام تابع شروع می شود. نام توابع از قوانینی مشابه با نام متغیرها پیروی می کند: آنها می توانند شامل حروف، اعداد، زیرخط و علامت دلار باشند و اغلب با حروف شتر نوشته می شوند. پس از این نام مجموعه ای از پرانتزها قرار می گیرد که می توانند برای پارامترهای اختیاری استفاده شوند. کد تابع در داخل پرانتزهای فرفری مانند دستورات for یا if قرار دارد.

همانطور که متوجه شده اید، مقدار پارامتر name در کد تعیین نشده است، این کار زمانی انجام می شود که تابع فراخوانی شود. هنگامی که تابع فراخوانی می شود، نام کاربری به عنوان آرگومان ارسال می شود. آرگومان مقدار واقعی است که به تابع ارسال می شود (در این مورد، نام کاربری، مانند 8host).

// تابع greet را با "8host" به عنوان آرگومان فراخوانی کنید
خوش آمدید ("8 میزبان");

مقدار 8host از طریق پارامتر name به تابع ارسال می شود. اکنون پارامتر name این مقدار را در این تابع نشان خواهد داد. کد فایل greetUser.js به شکل زیر است:

// عملکرد خوشامدگویی سفارشی را راه اندازی کنید
تابع سلام (نام) (
console.log(` سلام، $(name)!`);
}
// تابع greet را با "8host" به عنوان آرگومان فراخوانی کنید
خوش آمدید ("8 میزبان");

هنگامی که این برنامه را اجرا می کنید، این خروجی را دریافت خواهید کرد:

اکنون می دانید که چگونه می توانید از یک تابع استفاده مجدد کنید.

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

برگرداندن مقادیر

شما می توانید از بیش از یک پارامتر در یک تابع استفاده کنید. می توانید چندین مقدار را به یک تابع ارسال کنید و یک مقدار را برگردانید. برای مثال یک فایل sum.js ایجاد کنید و تابعی را در آن اعلام کنید که مجموع دو مقدار x و y را پیدا کند.

// مقدار اولیه تابع افزودن
تابع add(x,y) (
بازگشت x + y;
}

add(9, 7);

این کد تابعی را با پارامترهای x و y تعریف می کند. سپس تابع مقادیر 9 و 7 را دریافت می کند. برنامه را اجرا کنید:

برنامه مقادیر به دست آمده 9 و 7 را اضافه می کند و نتیجه 16 را برمی گرداند.

هنگامی که از کلمه کلیدی بازگشت استفاده می شود، اجرای تابع متوقف می شود و مقدار عبارت را برمی گرداند. در این مورد، مرورگر مقدار را در کنسول نمایش می دهد، اما این با استفاده از console.log() برای خروجی به کنسول نیست. هنگام فراخوانی، تابع مقدار را به جایی که از آن فراخوانی شده است، خروجی می دهد. این مقدار را می توان استفاده کرد یا در یک متغیر قرار داد.

عبارات تابع

در قسمت قبل، تابعی را اعلام کردید که دو عدد را جمع کرده و مقدار حاصل را برمی گرداند. همچنین می توانید با اختصاص دادن یک تابع به یک متغیر، یک عبارت تابع ایجاد کنید.

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

// تابع add را به ثابت جمع اختصاص دهید
const sum = تابع add(x, y) (
بازگشت x + y;
}
// برای یافتن مجموع تابع را فراخوانی کنید
sum(20, 5);
25

حالا مجموع ثابت یک تابع است. این عبارت را می توان با تبدیل آن به یک تابع ناشناس کوتاه کرد (به این ترتیب توابع بدون پارامتر نام فراخوانی می شوند). در حال حاضر، تابع add نامیده می شود، اما نام معمولاً در عبارات تابع حذف می شود.

// تابع را به مجموع ثابت اختصاص دهید
const sum = تابع (x, y) (
بازگشت x + y;
}
// برای یافتن مجموع تابع را فراخوانی کنید
sum(100, 3);
103

حالا تابع دیگر نامی ندارد، ناشناس شده است.

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

توابع پیکان

تا به حال توابع با استفاده از کلمه کلیدی تابع تعریف می شدند. با این حال، یک روش جدیدتر و مختصرتر برای تعریف یک تابع وجود دارد - توابع پیکان ECMAScript 6. توابع پیکان با علامت مساوی و به دنبال آن علامت بزرگتر نشان داده می شوند: =>.

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

// تابع ضرب را تعریف کنید
const ضرب = (x, y) => (
بازگشت x*y;
}

ضرب (30، 4);
120

به جای نوشتن تابع، فقط می توانید از نمادهای => استفاده کنید.

اگر تابع فقط یک پارامتر داشته باشد، پرانتزها را می توان حذف کرد. در مثال زیر، تابع x را مربع می کند، بنابراین تنها به یک عدد به عنوان آرگومان نیاز دارد.

// تابع مربع را تعریف کنید
مستمر مربع = x => (
بازگشت x*x;
}
// برای یافتن محصول، تابع را فراخوانی کنید
مربع (8);
64

توجه: اگر هیچ پارامتری در تابع فلش وجود ندارد، باید پرانتز خالی () اضافه شود.

توابع پیکانی که فقط از یک دستور بازگشت تشکیل شده اند را می توان کوتاه کرد. اگر تابع فقط از یک خط بازگشتی تشکیل شده باشد، می‌توانید مانند مثال زیر، پرانتزهای فرفری و دستور بازگشت را حذف کنید.

// تابع مربع را تعریف کنید
const مربع = x => x * x;
// برای یافتن محصول، تابع را فراخوانی کنید
مربع (10);
100

نتیجه

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

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

برچسب ها:

هنگامی که یک برنامه نیاز به ذخیره یک مقدار برای استفاده بعداً دارد، آن مقدار به یک متغیر اختصاص می یابد. یک متغیر به سادگی یک نام نمادین برای یک مقدار است که امکان دریافت مقدار را با نام فراهم می کند، یعنی زمانی که نام متغیر در برنامه مشخص می شود، مقدار جایگزین آن می شود.

یک متغیر نام خود را از این واقعیت گرفته است که مقدار آن در طول اجرای برنامه قابل تغییر است.

ثابت ها

یک ثابت فقط یک نام نمادین برای یک مقدار است. یک ثابت امکان ارجاع به یک مقدار را با نام می دهد، به این معنی که وقتی نام ثابت در برنامه مشخص می شود، مقدار جایگزین آن می شود. ثابت ها برای ذخیره داده هایی استفاده می شوند که نباید در طول اجرای برنامه تغییر کنند.

قبل از اینکه بتوان از یک ثابت استفاده کرد، باید آن را اعلام کرد. ثابت ها با کلمه کلیدی const و به دنبال آن نام ثابت اعلام می شوند. برای تشخیص ثابت ها از متغیرها در کد برنامه، قرار شد نام ثابت ها با حروف بزرگ نوشته شود:

Const MAX = 10;

هنگامی که یک ثابت ایجاد شد، تلاش برای تعریف مجدد آن به یک متغیر یا تلاش برای اختصاص یک مقدار به یک ثابت موجود، باعث خطا می شود.

چرا متغیرها و ثابت ها مورد نیاز است

متغیرها و ثابت ها به درک آسان کد کمک می کنند. یک مثال کوچک را در نظر بگیرید:

مجموع قیمت = 2.42 + 4.33; // قیمت کل

اعداد اینجا می تواند هر چیزی را معنی کند. برای روشن شدن آنچه در اینجا خلاصه می شود، مقدار 2.42 را می توان به متغیر (یا ثابت) candyPrice (قیمت آب نبات) و 4.33 را به متغیر (یا ثابت) oilPrice (قیمت کره) نسبت داد:

مجموع قیمت = آب نبات قیمت + روغن قیمت;

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

همچنین، متغیرها و ثابت ها به صرفه جویی در زمان هنگام اشکال زدایی یک اسکریپت کمک می کنند. به جای استفاده از همان literal در همه جا، می‌توانید آن را به یک متغیر (یا ثابت) در ابتدای اسکریپت اختصاص دهید و سپس از متغیر (یا ثابت) به جای حرف واقعی در بقیه کد اسکریپت استفاده کنید. اگر بعداً تصمیمی برای تغییر مقدار گرفته شود ، تغییرات در کد باید نه در چندین مکان بلکه فقط در یک مکان انجام شود - جایی که به متغیر (یا ثابت) مقدار اختصاص داده شده است.

محدوده ثابت ها

قوانین مشابهی برای ثابت ها اعمال می شود که برای متغیرهای اعلام شده با کلمه کلیدی let:

Const MAX = 5; // ثابت جهانی ( const MAX = 10; // Block console.log ثابت (MAX); // 10 ) console.log(MAX); // 5 foo(); // 15 console.log(MAX); // 5 تابع foo() ( const MAX = 15; // Console.log ثابت محلی (MAX)؛ )

ثابت ها و انواع مرجع

هنگامی که یک مقدار از یک نوع مرجع به یک ثابت اختصاص داده می شود، ارجاع به مقدار تغییر ناپذیر می شود و خود مقدار برای تغییر در دسترس باقی می ماند:

Const obj = (a: 5); obj.a = 10; console.log(obj.a); // 10

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

ارزش بلند مدت نرم افزار، مستقیماً به کیفیت کد بستگی دارد. این برنامه در طول وجود خود از تعداد زیادی دست و چشم توسعه دهندگان عبور می کند. اگر کد برنامه به گونه ای نوشته شده باشد که بتواند ساختار و ویژگی های آن را به وضوح بیان کند، در صورت اصلاح آن توسط توسعه دهندگان دیگر یا توسط خود نویسنده پس از مدت زمان طولانی، احتمال شکسته شدن آن کاهش می یابد.

توافقات در مورد کد برنامه، می تواند به بهبود کیفیت خروجی کمک کند و احتمال شکست محصول را کاهش دهد.

فایل های جاوا اسکریپت

برنامه های جاوا اسکریپت باید در فایل های .js ذخیره شوند.

کد جاوا اسکریپت نباید در آن جاسازی شود فایل های HTMLاگر کد مختص یک جلسه نیست. کد در HTML وزن صفحه را بدون امکان کاهش به دلیل ذخیره سازی و فشرده سازی بسیار افزایش می دهد.

در صورت امکان برچسب ها باید در انتهای سند قرار داده شوند. این امر تاخیر در بارگذاری صفحه html را کاهش می دهد.

تورفتگی

تورفتگی باید چهار فاصله باشد. بنابراین برای نوشتن کد باید ویرایشگر خود را طوری تنظیم کنید که برگه دقیقاً حاوی این مقدار باشد. استفاده از این تعداد کاراکتر ممکن است بر اندازه فایل تأثیر بگذارد، اما این مشکل با فشرده سازی فایل قبل از راه اندازی محصول حل می شود.

طول خط

از رشته های بیش از 80 کاراکتر خودداری کنید. اگر عبارت در یک خط قرار نگیرد، باید جابجا شود یا شکسته شود. هنگام شکستن یک خط، خط بعدی باید 8 فاصله از ابتدا تورفتگی داشته باشد.

بر خلاف توافق با در نظر گرفتن مانیتورهای مدرنو مجوزها، طول رشته را می توان تا 120 کاراکتر افزایش داد. ویرایشگرهای کد مدرن این خط را برجسته می کنند، به عنوان مثال NetBeans، PHPStorm، و طول آن قابل تنظیم است.

نظرات

تلاش برای توصیف کامل بخش های پیچیده کد ضروری است. توسعه دهندگانی که پس از مدتی به کد شما نگاه می کنند یا خود شما، باید بفهمند که این کد چه کاری انجام می دهد. نظرات باید به خوبی نوشته شوند، واضح و صحیح باشند، اگر نظر به اندازه کافی کامل نباشد، و حتی بدتر از آن - اشتباه باشد، که می تواند توسعه دهنده را گمراه کند، در این صورت بهتر است به هیچ وجه نظر ننویسید.

همچنین کامنت ها نباید چیزهای بدیهی را توصیف کنند، در غیر این صورت فقط وقت خواننده را تلف می کنند.

i = 0; // i را روی صفر قرار دهید.

یکی دیگر از خواص مفیدنظراتی که وقتی در قوانین خاصی مانند JSDoc نوشته می شود، می توان از آنها برای تولید اسناد کد استفاده کرد.

اعلان متغیرها

همه متغیرها باید قبل از استفاده اعلان شوند. جاوا اسکریپت به چنین ساختارهایی نیاز ندارد، اما خواندن برنامه را بسیار آسان‌تر می‌کند و تشخیص متغیرهای اعلام‌نشده را که ممکن است توسط مفسر فرض شود سراسری هستند، آسان‌تر می‌کند. در نظر گرفته شده، متغیرهای جهانی ضمنی هرگز نباید استفاده شوند، همه متغیرها فقط باید به طور صریح و با استفاده از عبارت var اعلام شوند.

ساختار var باید ابتدا در بدنه تابع قرار گیرد.

ترجیحاً، هر متغیر در یک خط جدید اعلام می شود و می تواند با یک نظر اضافه شود. بهتر است در صورت امکان، اعلان های متغیر را به ترتیب حروف الفبا نگه دارید.

Var currentEntry، // سطح ورودی جدول در حال حاضر انتخاب شده، // اندازه سطح تورفتگی. // اندازه جدول

جاوا اسکریپت مانند زبان هایی مانند پاسکال بلوک اعلان متغیر ندارد، اما برای حفظ نظم در کد، بهتر است متغیرها را در ابتدای تابع اعلام کنید.

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

اعلام عملکرد

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

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

تابع outer(c, d) ( var e = c * d؛ تابع inner(a, b) ( return (e * a) + b; ) return inner(0, 1)؛ )

اگر تابع تحت اللفظی ناشناس است، باید بین کلمه تابع و پرانتز ابتدایی لیست پارامترها فاصله وجود داشته باشد. اگر فضای خالی وجود نداشته باشد، ممکن است سردرگمی ایجاد شود که نام تابع تابع است، که ممکن است هنگام خواندن کد یک خطا به نظر برسد.

Div.onclick = تابع (e) (return false; ); that = ( متد: تابع () ( return this.datum; ), datum: 0 );

استفاده از توابع جهانی نیز باید به حداقل برسد.

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

مجموعه Var = (تابع () ( کلیدهای var = ، مقادیر = ؛ بازگشت ( دریافت: تابع (کلید) ( var at = keys.indexOf(key)؛ if (at >= 0) (مقادیر برگشتی؛)) مجموعه: تابع (کلید، مقدار) (var at = keys.indexOf(key)؛ if (at = 0) ( keys.splice(at, 1); values.splice(at, 1); ) )); )()) ؛

نام ها

نام متغیرها یا توابع می تواند از 26 کاراکتر بزرگ و کوچک (A .. Z، a ... z)، 10 رقم (0 .. 9) و یک خط زیر تشکیل شود. بهتر است از استفاده از شخصیت های بین المللی خودداری کنید، زیرا خواندن و درک آنها ممکن است دشوار باشد. در نام متغیرها و توابع از علامت $ (علامت دلار) یا (اسلش معکوس) استفاده نکنید.

از زیر خط _ به عنوان اولین کاراکتر نام استفاده نکنید. این روش گاهی اوقات برای اشاره به متغیرها یا توابع محلی (خصوصی) استفاده می شود، اما واقعا حریم خصوصی برای این متغیرها فراهم نمی کند. اگر کد شما نیاز به استفاده از اعضای خصوصی دارد، باید از امکان باز کردن این داده ها جلوگیری کنید.

اکثر متغیرها و توابع باید با یک حرف کوچک شروع شوند.

توابع سازنده که از یک اپراتور برای کار استفاده می کنند جدیدباید با حرف بزرگ شروع شود در حین کامپایل کردن یک اسکریپت جاوا اسکریپت یا بررسی کد با ابزارهای شخص ثالث، در صورت استفاده از توابع یا نام متغیرها بدون ساختار، هشدارها نشان داده می شود. جدید. عملیات عملکرد سازنده که از عملگر استفاده نمی کند جدیدرفتار کاملاً متفاوتی خواهد داشت، بنابراین قرارداد بزرگ کردن چنین توابعی تا حدودی ضد خطا است.

متغیرهای سراسری که معنای ثابت ها، فضاهای نام را دارند - باید با حروف بزرگ باشند، زیرا جاوا اسکریپت چنین ساختارهایی ندارد.

اپراتورها اپراتورهای ساده

هر خط نباید بیش از یک عبارت داشته باشد. هر عبارت ساده باید با نقطه ویرگول (;) به پایان برسد. توجه داشته باشید که دستور انتساب که یک تابع به آن نسبت داده شده است، باید با یک نقطه ویرگول به پایان برسد.

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

عبارات مرکب

عبارات مرکب عباراتی هستند که حاوی لیستی از عبارات دیگر محصور شده در () (پرانتزهای فرفری) هستند.

  • عبارات داخل دستورات مرکب باید با چهار فاصله تورفتگی داشته باشند.
  • ((پرانتز چپ) باید در انتهای خطی باشد که عبارت مرکب از آن شروع می شود.
  • ) (بریس مجعد سمت راست) باید روی آن قرار گیرد خط جدیدو تورفتگی، برای تراز کردن با ابتدای خط حاوی تطابق ((پرانتز مجعد سمت چپ).
  • بریس‌های فرفری باید تا حد امکان وجود داشته باشند، این برای جلوگیری از خطاهای تصادفی و برای خوانایی کد ضروری است.
برچسب ها

وجود برچسب ها زنگ تفريحو ادامه هیددر کد فقط در ساختارها قابل استفاده است در حالی که, برای, انجام دادنو تعویض.

بیانیه بازگشت

مقدار یک عبارت بازگشتی هرگز نباید در () (پرانتز) محصور شود. مقدار این عبارت باید از همان خط خود دستور بازگشت شروع شود تا از وارد کردن تصادفی نقطه ویرگول هنگام تفسیر یا فشرده سازی کد جلوگیری شود.

اگر بیانیه

دستور if باید به شکل زیر باشد:

اگر (شرط) (گزاره ها) اگر (شرط) (گزاره ها) else (گزاره ها) اگر (شرط) (گزاره ها) دیگر اگر (شرط) (گزاره ها) else (گزاره ها)

برای بیانیه

دستور for باید ساختار زیر را داشته باشد:

برای (ابتدایی، شرط، به روز رسانی) ( دستورات ) برای (متغیر در شی) ( if (فیلتر) ( دستورات ))

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

شکل دوم هنگام کار با اشیاء استفاده می شود. به خاطر داشته باشید که اعضایی که به نمونه اولیه یک شی اضافه می شوند، در enum گنجانده می شوند. برای انجام این کار، باید از یک چک با متد hasOwnProperty استفاده کنید تا خصوصیات واقعی شی را تشخیص دهید:

برای (متغیر در شی) (اگر (object.hasOwnProperty(متغیر)) (گزاره ها))

در حالی که بیانیه

ساختار while باید به شکل زیر باشد:

در حالی که (شرط) (گزاره ها)

انجام بیانیه

دستور do باید به شکل زیر باشد:

Do ( عبارات ) while (شرط);

برخلاف دیگر گزاره‌های مرکب، این یکی باید همیشه پایان یابد. (نقطه ویرگول).

عبارت switch

دستور switch باید به شکل زیر باشد:

سوئیچ (عبارت) ( عبارت موردی: عبارات پیش‌فرض: عبارات)

هر شاخه case باید در راستای دستور switch باشد. این از فرورفتگی بیش از حد جلوگیری می کند.

هر گروه از عبارات case به غیر از پیش فرض باید به پایان برسد زنگ تفريح, برگشتیا پرت كردن.

عبارت try

دستور try باید به شکل زیر باشد:

سعی کنید ( عبارات ) catch (متغیر) ( عبارات ) تلاش ( عبارات ) catch ( متغیر) ( گزاره ها ) در نهایت ( گزاره ها )

ادامه بیانیه

از استفاده از عبارت continue خودداری کنید. این عبارت تمایل دارد جریان اجرای یک تابع را پنهان کند.

با بیانیه

با اپراتور نباید استفاده شود.

فضاها

خطوط خالی با تفکیک کدها به بخش هایی که از نظر منطقی مرتبط هستند، خوانایی را بهبود می بخشد.

فضاها باید در موارد زیر استفاده شوند:

  • کلمه کلیدی به دنبال ((پرانتز چپ) باید با فاصله از هم جدا شود
    در حالی که (درست)(
  • هیچ فاصله ای بین نام تابع و ((پرانتز چپ) در ساختار تابع f() قرار داده نشود. این به تمایز کمک می کند. کلید واژه هاو یک فراخوانی تابع.
  • همه عملگرهای باینری به جز. (نقطه)، ((براکت چپ) و [ (کراکت چپ) باید با فاصله از هم جدا شوند.
  • هر یک؛ (نقطه ویرگول) در قسمت کنترل سازه for باید با یک فاصله از هم جدا شود.
  • فاصله ها باید بعد از هر کاما دنبال شوند.

در پروژه های بزرگ، در نظر گرفتن همه این قراردادها بدون استفاده از ابزارهای کمکی و ویرایشگرهای کد بسیار دشوار می شود. بنابراین، برای کنترل خود، نیاز به دستیابی به چنین ابزارهایی وجود دارد.

JSLint. ابزار برای اعتبار سنجی جاوا اسکریپتکد

زبان جاوا اسکریپت یک زبان تفسیری است که کامپایلر خود را ندارد، در مقایسه با زبان هایی مانند Java، C ++، که هنگام ساخت یک پروژه یا قبل از راه اندازی آن، کیفیت کد نوشته شده را بررسی می کند. تفاوت های ظریف مختلف مانند متغیرهای اعلام شده اما استفاده نشده، کد بخش های بهینه نشده، نقطه ویرگول های از دست رفته و غیره را در نظر بگیرید. بنابراین، داشتن ابزاری که بررسی کند و خطاهای مختلف را به توسعه دهنده نشان دهد مفید خواهد بود.

یکی از این ابزارها JSLint است. JSLint یک برنامه جاوا اسکریپت است که هدف آن یافتن مشکلات در برنامه های جاوا اسکریپت است.

زمانی که C هنوز یک زبان جوان بود، چندین خطای برنامه نویسی رایج وجود داشت که توسط کامپایلرهای اولیه شناسایی نمی شدند، بنابراین برنامه ای به نام lint برای اسکن یک فایل منبع برای یافتن خطاها ایجاد شد.

هنگامی که زبان به سطح معینی از کمال رسید، کامپایلرها شروع به بررسی بهتر آن کردند و پیام های مناسب را صادر کردند، پس از آن دیگر نیازی به برنامه lint نبود.

جاوا اسکریپت یک زبان جوان است. این در ابتدا برای انجام کارهای کوچک در صفحات وب استفاده می شد، کارهایی که جاوا برای آنها بسیار سنگین و درهم بود. در حال حاضر زبان جاوا اسکریپت نقش زیادی در وب دارد و در پروژه های بزرگ و پیچیده استفاده می شود. بسیاری از ویژگی‌هایی که در این زبان پیاده‌سازی شده‌اند برای ساده‌سازی آن طراحی شده‌اند، اما با بزرگ‌تر شدن و پیچیده‌تر شدن پروژه‌ها، این قابلیت به یک نگرانی تبدیل می‌شود. بنابراین، برنامه های جاوا اسکریپت به ابزاری مانند نیاز دارند پرز.

JSLintبرت منبعجاوا اسکریپت و آن را اسکن کنید. هنگامی که مشکلی پیدا می شود، پیامی با شرح مشکل و مکان تقریبی آن برگردانده می شود منبع فایل. ممکن است مشکل لزوماً یک خطای نحوی نباشد، بررسی سبک نیز انجام می شود، مطابق با ساختار کد.

متغیرهای جهانی

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

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

گاهی اوقات یک فایل به متغیرها و توابع جهانی بستگی دارد که در جای دیگری تعریف شده اند. برای انجام این کار، باید چنین متغیرهایی را در یک دستورالعمل خاص /*global */ توصیف کنید، که به JSLint می گوید که در فایل های دیگر استفاده می شوند و اشتباه نیستند. متغیرهای یک دستورالعمل، فهرستی از نام‌ها هستند که با کاما از هم جدا شده‌اند. هر نام می تواند شامل یک دونقطه به دنبال یک پرچم درست یا غلط باشد تا مشخص کند که آیا متغیر برای آن فایل در نظر گرفته شده است یا نه.

برخی از متغیرهای سراسری ممکن است در ابتدا تعریف شده باشند. زمانی که ویژگی های استاندارد جهانی را که توسط مرورگر ارائه می شود از قبل تعریف کنید، یک مرورگر فرض کنید سندو addEventListener.

/*global clearInterval: false, clearTimeout: false, document: false, event: false, frames: false, history: false, Image: false, location: false, name: false, Navigator: false, Option: false, والد: false ، صفحه نمایش: false، setInterval: false، setTimeout: false، پنجره: false، XMLHttpRequest: false */

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

/*هشدار جهانی: نادرست، تایید: نادرست، کنسول: نادرست، اشکال زدایی: نادرست، اپرا: نادرست، اعلان: نادرست، WSH: نادرست */

نقطه ویرگول

جاوا اسکریپت از نحوی شبیه به C استفاده می کند که برای تعیین حدود عبارات نیاز به استفاده از نقطه ویرگول دارد. در جاوا اسکریپت، قرار دادن نقطه ویرگول در انتهای هر عبارت اختیاری است، می توانید به جای آن یک خط جدید انجام دهید و چنین کدی برای یک مرورگر وب معتبر در نظر گرفته می شود، اما این رویکرد می تواند منجر به خطا شود.

JSLint انتظار دارد هر عبارت پایان یابد. (نقطه ویرگول)، استثناها در برخی موقعیت ها فقط می توانند برای دستورات، تابع، if، سوئیچ، try و while باشند.

کاما

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

JSLint انتظار دارد استفاده از کاما را به عنوان جداکننده ببیند، اما نه به عنوان یک دستور (به جز برای مقداردهی اولیه و افزایش بخشی از یک دستور).

منطقه دید

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

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

در زبان‌های دارای محدوده بلاک، عموماً ایده خوبی است که متغیرها را در محلی که مستقیماً استفاده می‌شوند، اعلام کنید. اما از آنجایی که جاوا اسکریپت محدوده بلوکی ندارد، درست است که همه متغیرها را در بالای تابع اعلام کنیم. توصیه می شود برای هر تابع از یک دستور var استفاده کنید. این توصیه را می توان با این گزینه غیرفعال کرد vars.

بلوک های مورد نیاز

JSLint انتظار دارد if، while، do، و ساختارها دارای پرانتز باشند، مهم نیست که چه تعداد عبارت در آن ساختارها وجود دارد.

جاوا اسکریپت نماد زیر را مجاز می کند:

if (شرط) بیانیه;

شناخته شده است که این شکل از نشانه گذاری باعث ایجاد خطا در پروژه ها می شود. بنابراین، JSLint استفاده از نماد زیر را پیشنهاد می کند:

اگر (شرط) (گزاره ها؛)

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

برای در

حلقه for در برای برشمردن تمام خصوصیات یک شی استفاده می شود. اما همچنین با کمک این چرخه، کاملاً تمام ویژگی ها مشاهده می شود، از جمله آنهایی که از طریق نمونه اولیه به ارث رسیده اند. بد معلوم میشه اثر جانبیزمانی که یک متد را به عنوان ویژگی دریافت می کنیم. اگر چنین حلقه ای بدون درک این وضعیت نوشته شود، این قطعه کد ممکن است باعث خطا شود.

بدنه حلقه باید در یک دستور if پیچیده شود که ویژگی شی را بررسی می کند تا ویژگی های نمونه اولیه را حذف کند، مانند این:

برای (نام در شی) (اگر (object.hasOwnProperty(name)) ( .... ) )

در بیشتر موارد، باید از این اپراتور به طور کامل اجتناب شود. بهترین شرط شما این است که به روش هایی مانند Object.keys و Array.prototype.forEach تکیه کنید.

تعویض

یک اشتباه رایج در دستور سوئیچ این است که فراموش می کنیم پس از ساخت case یک break قرار دهیم. JSLint انتظار دارد که هر عبارت case با یک شکست , بازگشت یا پرتاب به پایان برسد . هر ساختار case با دستور switch مطابقت دارد.

var

جاوا اسکریپت به شما این امکان را می دهد که var را در هر جایی از یک تابع تعریف کنید. JSLint در این مورد در مورد چنین تعاریفی سختگیرتر است.

JSLint انتظار دارد که ساختار var فقط یک بار و قبل از استفاده از آن اعلان شود.

JSLint نظر منفی به استفاده از ساختار var در داخل پرانتز دارد، زیرا آنها محدوده خاص خود را ندارند.

با

این ساختار در ابتدا برای ارائه دسترسی کوتاه به ویژگی های اشیاء عمیق تو در تو در نظر گرفته شده بود. استفاده از این ساختار می تواند منجر به سردرگمی بین استفاده از متغیرها و ویژگی ها شود که می تواند منجر به رفتار غیرقابل پیش بینی برنامه شود. بنابراین، بهتر است هرگز از این عملگر استفاده نکنید.

== و !=

و اپراتورهای != قبل از مقایسه نوع ریخته گری را انجام می دهند. بد است چون طرح های مختلفبرای مثال "trn" == 0 درست خواهد بود. این ممکن است با یک خطا پنهان شود. JSLint نمی تواند به طور قابل اعتماد تعیین کند که آیا استفاده از == در حال حاضر موجه است، بنابراین بهتر است همیشه از مقایسه بدون ریخته گری ضمنی استفاده کنید، یعنی === و !==.

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

++ و --

JSLint مخالف استفاده از این عملگرها است. با استفاده از گزینه می توانید آنها را فعال کنید پلاس پلاس.

عملیات بیت

جاوا اسکریپت نوع Integer ندارد، اما دارای عملگرهای بیتی است. عملگرهای بیتی عملوندهای ممیز شناور را به اعداد صحیح و از آنها تبدیل می کنند، بنابراین آنها به اندازه C یا زبان های دیگر کارآمد نیستند. آنها به ندرت در برنامه های مرورگر مفید هستند. شباهت به عملگرهای منطقیممکن است برخی از خطاهای برنامه نویسی را پنهان کند. گزینه bitwise امکان استفاده از این عملگرها را فراهم می کند.

اوال شر است

تابع eval (و بستگان آن setTimeout و setInterval) دسترسی به کامپایلر جاوا اسکریپت را فراهم می کند. این گاهی اوقات ضروری است، اما بیشتر اوقات نشان دهنده سبک برنامه نویسی بسیار ضعیف است. تابع eval اشتباه ترین ویژگی جاوا اسکریپت است.

سازندگان و جدید

سازنده ها توابعی هستند که قرار است با اپراتور جدید استفاده شوند. این پیشوند یک شی جدید بر اساس نمونه اولیه تابع ایجاد می کند و این شی تابع را با متغیری که اختصاص داده شده است مرتبط می کند. اگر استفاده از عملگر جدید برای تابع سازنده نادیده گرفته شود، نتیجه بازگشتی دقیقاً همان چیزی نخواهد بود که انتظار می رفت.

JSLint این قرارداد را اجرا می‌کند که سازنده‌های تابع باید نام‌هایی داشته باشند که حرف اول آنها در باشد حروف بزرگ، در غیر این صورت اگر این تابع با عملگر جدید فراخوانی شود، خطای اعتبارسنجی محسوب می شود.

استفاده از عملگر جدید با اشیایی مانند Number، String، Boolean - یک خطای اعتبارسنجی در نظر گرفته می شود.

هنگام بررسی چنین ساختار Object جدیدی، JSLint فرض می کند که اشتباه است، به جای آن بهتر است از نماد کوتاه - () استفاده کنید.

گزینه ها

JSLint چندین گزینه را ارائه می دهد که نحوه عملکرد آن را کنترل می کند. در یک برنامه وب JSLint، گزینه ها با استفاده از چک باکس ها و دو فیلد انتخاب می شوند.

هنگامی که JSLint به عنوان یک تابع فراخوانی می شود، یک پارامتر، یک شی گزینه می گیرد که به شما امکان می دهد یک زیر مجموعه قابل قبول از جاوا اسکریپت را مشخص کنید. در یک صفحه وب، نسخه http://www.JSLint.com JSLint این کار را به طور خودکار انجام می دهد.

با استفاده از دستور /*JSLint*/ می توان گزینه ها را نیز در یک اسکریپت تنظیم کرد:

/*jslint nomen: true، debug: true، evil: false، vars: true */

شرح گزینه معنی
عبارات تکلیف را تحمل کنید الاغ درست است اگر تخصیص باید خارج از موقعیت بیانیه مجاز باشد.
نادیده گرفتن عملگرهای بیتی به صورت بیتی درست است اگر عملگرهای بیتی نباید اعتبارسنجی را پاس کنند
اجازه دادن به ویژگی های مرورگر مرورگر درست است، متغیرهای استاندارد جهانی مرورگر در نظر گرفته شده است
اجازه دادن به اصطلاحات Google Close بسته درست است اگر یادداشت‌های بسته شدن Google مجاز باشد
اجازه ادامه دادن ادامه هید نادیده گرفتن استفاده از countinue درست است
پیشنهاد CouchDB نیمکت درست است اگر می خواهید توابع CouchDB جهانی در نظر گرفته شوند
Debgger را مجاز کنید اشکال زدایی درست است اگر دستور اشکال زدایی مجاز باشد
اجازه کنسول، هشدار توسعه درست است اگر گزینه مرورگر تنظیم نشده باشد و بخواهید این اپراتورها مجاز باشند
اجازه == و != eqeq درست است اگر عملگرهای == و != مجاز باشند
اجازه ارزیابی بد درست است اگر eval مجاز باشد
فاصله ها و تورفتگی ها تورفتگی تعداد فضاهای استفاده شده برای تورفتگی (پیش‌فرض 4)
حداکثر تعداد خطا ماکسر حداکثر تعداد اخطارها برای گزارش اعتبارسنجی (پیش‌فرض 50)
حداکثر طول خط ماکسلن حداکثر تعداد کاراکتر در هر خط
استفاده از حروف بزرگ در ابتدای کلمه در نام سازنده کلاه جدید درست است اگر حروف اول در نام توابع سازنده مورد نیاز باشد
Node.js را در نظر بگیرید گره درست است اگر Node.js باید در متغیرهای سراسری رعایت شود
Allow dash _ در شناسه ها نام درست است اگر نمی خواهید چنین متغیرهایی را مجاز کنید
در اولین خطا توقف کنید شکست خوردن درست است اگر اسکن باید در اولین خطا متوقف شود
++ و -- پلاس پلاس درست است اگر ++ یا -- مجاز باشد
عدم وجود "استفاده از سخت" را در ابتدای یک تابع مجاز کنید درهم و برهم درست است، به طوری که درج خط "استفاده سخت" اختیاری است
اجازه دادن به نظرات TODO انجام دادن درست به عدم واکنش به نظرات TODO
گزینه های استفاده نشده را مجاز کنید unparam درست است، هشدارهای مربوط به پارامترهای استفاده نشده را نشان ندهید
چند متغیر در یک تابع مجاز است vars true، برای استفاده چندگانه از var در یک تابع
به فضاهای کثیف اجازه دهید سفید درست است، نادیده گرفتن فضاهای کثیف