new Function
yeniden kullanılabilen bir işlev oluşturur. eval
sadece verilen dizgeyi çalıştırır ve son ifadenin sonucunu döndürür. Bir eval taklit etmek için Function kullanan bir sarmalayıcı işlevi oluşturmaya çalıştığınızda sorunuz yanlış yönlendirilmiş.
Perdelerin arkasında bazı kodlar paylaştıkları doğru mu? Evet, büyük ihtimalle. Tam olarak aynı kod mu? Hayır, kesinlikle.
Eğlence için, burada bir işlev oluşturmak için eval kullanarak kendi kusurlu uygulamam. Umarım farkı biraz aydınlatır!
function makeFunction() {
var params = [];
for (var i = 0; i < arguments.length - 1; i++) {
params.push(arguments[i]);
}
var code = arguments[arguments.length - 1];
return eval('[function (' + params.join(',')+ '){' + code + '}][0]');
}
Bu ve yeni İşlev arasındaki en büyük fark, İşlevin sözcüksel olarak kapsamlı olmamasıdır. Böylece kapanış değişkenlerine erişimi olmazdı ve benimki olur.