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 هست رو چاپ می کند.
مطلبی دیگر از این انتشارات
نوشتن کوئری Mysql در Node.js
مطلبی دیگر از این انتشارات
انواع متغیر در جاوا اسکریپت و نحوه بررسی آنها
مطلبی دیگر از این انتشارات
همه چیز درباره آرایه ها در زبان جاوا اسکریپت - قسمت 3