Yesterday in my class I got this puzzle :
Name everything wrong with this javascript code, then tell how you would re-write it.
function makeFun() {
f = {};
for( var i=0 ; i<3 : i++ ) {
f[i] = function() { alert("sum='+i+f.length); }
}
return f;
}
Expected Results:
makeFun()0 should alert “sum=0”
makeFun()1 should alert “sum=2”
makeFun()2 should alert “sum=4”
I solved it like this :
function makeFun() {
var i,
f = {};
for (i = 0; i < 3; i++) {
f[i] = (function(number) {
return function() {
alert("sum=" + (number * 2));
}
}(i));
}
return f;
}
Today I got another assignment and I’m unable to solve it, here it is :
Name everything wrong with this javascript code, then tell how you would re-write it.
function makeFun(fInput) {
f = fInput || {};
// append three functions
for( var i=0 ; i<3 : i++ ) {
f[i] = function() { alert("sum='+i+f.length); }
}
return f;
}
// Sample Expected Results (do not change)
myvar = makeFun();
myvar0; // should alert “sum=0”
myvar1; // should alert “sum=2”
makeFun([‘a’])2; // should alert “sum=5”