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 هست رو چاپ می کند.
مطلبی دیگر از این انتشارات
آینده وب اپلیکیشن ها با PWA
مطلبی دیگر از این انتشارات
یک توسعهدهنده رابطکاربری چه مهارتهای فنیای باید داشته باشد؟
مطلبی دیگر از این انتشارات
HTML چیست و چه کاربردی دارد؟