Web Developer
سوال جالبی که گوگل در مصاحبه جاوا اسکریپت می پرسه

سوال باحال و معروفی از جاوا اسکریپت وجود داره که توی مصاحبه های استخدامی گوگل، آمازون و ... زیاد پرسیده شده.
سوال
خروجی کد زیر چیست؟
const arr = [10, 12, 15, 21];
for ( var i = 0; i < arr.length; i++ ) {
setTimeout( function () {
console.log( 'Index: ' + i + ', element: ' + arr[ i ] );
}, 3000);
}
اگر جواب این سوال رو میتونید بگید پس روی چند تا از مسائل پایه ای جاوا اسکرپیت مثل closure، scope setTimeout تسلط کافی دارید:)
جواب سوال
این کد ۴ بار خروجی زیر رو چاپ میکنه:
Index: 4, element: undefinedمراحل اجرای کد
طول آرایه arr برابر ۴ هست پس i در ۴ مرتبه برابر ۰ و ۱ و ۲ و ۳ می باشد و در بار آخری که بررسی می شود برابر ۴ می باشد.
از طرف دیگر توابع closure در جاوا اسکریپت از متغیر های scope بالایی خود مطلع هستند.
یعنی تابعی که به صورت closure به setTimeout می دهیم مقدار i که آخرین بار قبل از گذشت ۳ ثانیه برابر ۴ شده بود رو داره.
پس ۴ بار این تابع اجرا می شود و هر بار i را که برابر ۴ و سپس [arr[4 که undefined هست رو چاپ می کند.
مطلبی دیگر از این انتشارات
انواع متا تگ ها
مطلبی دیگر از این انتشارات
محاسبه زمان خواندن یک مطلب در جاوا اسکریپت
مطلبی دیگر از این انتشارات
اولین برنامه با Express