জাভাস্ক্রিপ্টে আমি যা ঘৃণা করি তা হ'ল (আপনি যদি এফপি ভাষা হিসাবে দেখার চেষ্টা করেন) এটি হ'ল:
function getTenFunctionsBad() {
var result = [];
for (var i = 0; i < 10; ++i) {
result.push(function () {
return i;
});
}
return result;
}
function getTenFunctions() {
var result = [];
for (var i = 0; i < 10; ++i) {
result.push((function (i) {
return function () {
return i;
}
})(i));
}
return result;
}
var functionsBad = getTenFunctionsBad();
var functions = getTenFunctions()
for (var i = 0; i < 10; ++i) {
// using rhino print
print(functionsBad[i]() + ', ' + functions[i]());
}
// Output:
// 10, 0
// 10, 1
// 10, 2
// 10, 3
// 10, 4
// 10, 5
// 10, 6
// 10, 7
// 10, 8
// 10, 9
আপনার যেমন জেএস স্ট্যাক পরিবেশ বুঝতে হবে (আমি যদি এটি সঠিক শব্দ না হয় তবে) এমন আচরণটি বুঝতে হবে।
প্রকল্পের উদাহরণস্বরূপ আপনি কেবল এ জাতীয় জিনিস উত্পাদন করতে পারবেন না (ঠিক আছে, ঠিক আছে - অন্তর্নিহিত ভাষার উল্লেখগুলির সাহায্যে আপনি এটি তৈরি করতে পারেন):
(define (make-ten-functions)
(define (iter i)
(cond ((> i 9) '())
(else (cons (lambda () i) (iter (+ i 1))))))
(iter 0))
(for-each (lambda (f)
(display (f))
(newline)) (make-ten-functions))