На этот вопрос может быть дан ответ в другом месте, но я даже не был уверен, как начать поиск ответа. Я новичок в JavaScript, так что это борьба за меня, чтобы понять.Возврат функции Chrome Dev tools
Учитывая следующий код:
function multiple(n) {
function f(x) {
return x * n;
}
return f;
}
var triple = multiple(3);
var quadruple = multiple(4);
Когда я прохожу следующее в консоли:
console.log(triple(5));
я получаю то, что я ожидал, то есть 15. Точно так же с любым числом, оно будет в три раза (или в четыре раза, если я использовал вторую функцию).
Но когда я печатаю тройку в консоли я получаю следующий код:
f(x) {
return x * n;
}
не должна вернуть консоль ...
f(x) {
return x * 3;
}
... так как 3 закодированы в функция в силу следующего кода:
var triple = multiple(3);
Вы как-то ответили на свой вопрос, 3 не «закодированы в» f, вы передаете его в качестве параметра. Консоль просто показывает вам источник для функции, которую она имеет. Теперь в вашем источнике есть x * 3. – pvg
это так называемое [закрытие] (https://www.wikiwand.com/en/Closure_ (computer_programming)). См. Также [«Лексические среды: общая теория»] (http://dmitrysoshnikov.com/ecmascript/es5-chapter-3-1-lexical-environments-common-theory/) – user2683246