י ה ל ו ם י ר ו ק
New member
ניסיתי להבין וקראתי המון חומר לגבי המושג block scope.
אבל עדיין לא הבנתי 2 דוגמאות:
1. למה הקוד הבא מדפיס ל- console את המספר 5, שש פעמים (את ההדפסה החמישית והשישית אני מבין), לא מבין למה 4 ההדפסות הראשונות הן לא: 1,2,3,4:
2. מה ההבדל בין שני קטעי קוד.. לא מצליח להבין למה אחד עובד נכון (כמו שמצפים) והשני לא:
I. עובד לא כפי שמצפים:
II. עובד כמו שמצפים:
אבל עדיין לא הבנתי 2 דוגמאות:
1. למה הקוד הבא מדפיס ל- console את המספר 5, שש פעמים (את ההדפסה החמישית והשישית אני מבין), לא מבין למה 4 ההדפסות הראשונות הן לא: 1,2,3,4:
קוד:
for(var x = 0; x < 5; ++x) {
setTimeout(() => console.log(x)) // closes over the `x` which is logically positioned at the top of the enclosing scope, above the loop
}
console.log(x) // note: visible outside the loop
2. מה ההבדל בין שני קטעי קוד.. לא מצליח להבין למה אחד עובד נכון (כמו שמצפים) והשני לא:
I. עובד לא כפי שמצפים:
קוד:
var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
// and store them in funcs
funcs[i] = function() {
// each should log its value.
console.log("My value: " + i);
};
}
for (var j = 0; j < 3; j++) {
// and now let's run each one to see
funcs[j]();
}
II. עובד כמו שמצפים:
קוד:
var funcs = [];
function createfunc(i) {
return function() {
console.log("My value: " + i);
};
}
for (var i = 0; i < 3; i++) {
funcs[i] = createfunc(i);
}
for (var j = 0; j < 3; j++) {
// and now let's run each one to see
funcs[j]();
}