آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

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

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

سفارش بیانیه

دسته بندی :اخبار سایت 18 مارس 2023 علیرضا بابامرادی 301
سفارش بیانیه

سفارش بیانیه

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

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

هشدار: اگر تا به حال بتوانید بیانیه کامپایلر را مانند ما که می خواهیم نشان دهیم ، مشاهده کنید ، این یک نقض آشکار از مشخصات خواهد بود ، و بدون شک ناشی از اشکال در موتور JS مورد نظر است – کدام یک که باید سریعاً گزارش و ثابت شود! اما بسیار رایج تر است که شما گمان می کنید که چیزی دیوانه وار در موتور JS اتفاق می افتد ، وقتی در واقع این فقط یک اشکال است (احتمالاً یک “شرایط مسابقه”!) در کد خود شما است – بنابراین ابتدا به آنجا نگاه کنید ، و دوباره و دوباره. Debugger JS با استفاده از نقاط شکست و قدم زدن از طریق خط کد به صورت خط ، قدرتمندترین ابزار شما برای خراب کردن چنین اشکالات موجود در کد شما خواهد بود.

در نظر بگیرید:

var a, b;

a = 10;
b = 30;

a = a + 1;
b = b + 1;

console.log( a + b ); // 42

این کد هیچ گونه ناهماهنگی نسبت به آن ندارد

(غیر از کنسول نادر Async I/O که قبلاً مورد بحث قرار گرفت!) ، بنابراین محتمل ترین فرض این است که این خط را به صورت از بالا به پایین پردازش می کند.

اما این امکان وجود دارد که موتور JS پس از تهیه این کد (بله ، JS گردآوری شده است – به عنوان دامنه و بسته شدن این سری کتاب مراجعه کنید!) ممکن است با تنظیم مجدد (با خیال راحت) ترتیب این گفته ها ، سریعتر کد خود را اجرا کنید بشر اساساً ، تا زمانی که نتوانید تنظیم مجدد را مشاهده کنید ، بازی عادلانه هر چیزی.

به عنوان مثال ، موتور ممکن است سریعتر باشد که در واقع کد مانند این را اجرا کند:

var a, b;
a = 10;
a++;
b = 30;

b++;
console.log( a + b ); // 42

و یا این

var a, b;
a = 11;
b = 31;
console.log( a + b ); // 42

یا دیگری

// because `a` and `b` aren’t used anymore, we can
// inline and don’t even need them!
console.log( 42 ); // 42

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

اما در اینجا سناریویی وجود دارد که این بهینه سازی های خاص ناامن است و بنابراین نمی توان مجاز به آن شد (البته این که بگوییم اصلاً بهینه نشده است):

var a, b;
a = 10;
b = 30;
// we need `a` and `b` in their preincremented state!
console.log( a * b ); // 300
a = a + 1;
b = b + 1;
console.log( a + b ); // 42

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

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

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

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

لینک کوتاه:
0