Почему функция дает разный результат [закрыт]

107
06 апреля 2021, 17:10
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

var d = {}; 
 
function bind(f, arg1) { 
 
  return function() { 
    var start = performance.now(); 
 
    var func = f.apply(this, arguments) 
 
    if (!d[arg1]) { 
      d[arg1] = 0; 
    } 
    d[arg1] += performance.now() - start; 
    return func 
  } 
} 
 
var fibonacci = function f(n) { 
  return (n > 2) ? f(n - 1) + f(n - 2) : 1; 
} 
 
var fibonacci = bind(fibonacci, "fibo"); 
 
console.log(fibonacci(10)); // 55 
console.log(d.fibo + ' мс ');

var d = {}; 
 
function bind(f, arg1) { 
 
  return function() { 
    var start = performance.now(); 
 
    var func = f.apply(this, arguments) 
 
    if (!d[arg1]) { 
      d[arg1] = 0; 
    } 
    d[arg1] += performance.now() - start; 
    return func 
  } 
} 
 
var fibonacci = function f(n) { 
  return (n > 2) ? f(n - 1) + f(n - 2) : 1; 
} 
 
var q = bind(fibonacci, "fibo"); 
 
console.log(q(10)); // 55 
console.log(d.fibo + ' мс ');

Answer 1

Потому что в первом примере:

var fibonacci = bind(fibonacci, "fibo");

а во втором:

var q = bind(fibonacci, "fibo");

Измените во втором примере

console.log(fibonacci(10)); // 55

на

console.log(q(10)); // 55

получается функцию

var fibonacci = function f(n) { return (n > 2) ? f(n - 1) + f(n - 2) : 1; }

мы переписали а как тогда мы получаем результат ?

Результат мы получаем, потому что замыкание, созданное внутри bind, содержит ссылку на старую функцию fibonacci, которую мы туда передали.

READ ALSO
Route не рендерит компонент при ручном вводе url адреса

Route не рендерит компонент при ручном вводе url адреса

Делаю небольшое SPA с несколькими страницами, навигацию выполняю средствами react-routerПри клике на <Link /> страницы Route рендерит нужный компонент...

121
Найти определенный объект в массиве объектов?

Найти определенный объект в массиве объектов?

У меня есть массив объектовИх достаточно большое количество

101
Вопрос по DOM в JS

Вопрос по DOM в JS

У меня есть одна проблема с которой я очень часто сталкиваюсь при написании js кодаОбъясню на пример

105