Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
var new_function = Function.apply(null, fn_body, /*именованные аргументы*/ 'fact', 'N');
Вас не затруднит показать мне в каком месте теряется доступ к замыканию
( ->
mod = (it)-> it | 0
O = f_context ->
fact(0) -> mod 1
fact(N) -> mod N * fact(N - 1)
console.log O.fact 10
)()
вменяемую отладку на них никогда не построить
Автозаменяемый на лету код очень сложно дебажить и предсказать его поведение
f_fact(0) -> 1
f_fact(N) ->
debugger
N * f_fact(N - 1)
...
var f_fact_local_0 = function(){
return 1;
};
var f_fact_local_1 = function(N){
debugger; //вот ваш дебаггер, все нужные переменные на месте
return N * f_fact(N - 1);
};
var f_fact = function(){
if(arguments[0] === 0 && arguments.length === 1){
return f_fact_local_0();
}
if(arguments.length === 1){
return f_fact_local_1(arguments[0]);
}
...
Функциональное программирование на CoffeeScript с библиотекой f_context