gpt4 book ai didi

Javascript 内存解释?

转载 作者:可可西里 更新时间:2023-11-01 02:50:23 24 4
gpt4 key购买 nike

阅读书中的示例,有人可以解释当函数本身未声明任何参数时,对 fibonacci 的函数调用如何接受参数“i”吗?

var fibonacci = (function () {
var memo = [0, 1];
var fib = function (n) {
var result = memo[n];
if (typeof result !== 'number') {
result = fib(n - 1) + fib(n - 2);
memo[n] = result;
}
return result;
};
return fib;
}());

for(var i = 0; i <= 10; i += 1) {
document.writeln('// ' + i + ': ' + fibonacci(i));
}

最佳答案

您正在创建一个自执行的匿名函数 (function(){}());,它在内部返回 fib 函数,该函数接受一个参数。 var fib = function(n){} ... return fib;

var fibonacci = (function () { // Self-executing anonymous function
var memo = [0, 1]; // local variable within anonymous function
var fib = function (n) { // actual fib function (takes one argument)
var result = memo[n];
if (typeof result !== 'number') {
result = fib(n - 1) + fib(n - 2);
memo[n] = result;
}
return result;
};
return fib; // return fib (fibonacci is now set to the function fib defined above, which takes one argument)
}());

这个系统(从自执行的匿名函数返回一个函数)允许您在局部范围内定义变量,该变量仍然可以被返回的函数使用,但不能被范围外的函数使用。这是一个 example .

这种技术在 JavaScript 中称为闭包。在 MDN guide. 上阅读更多相关信息

关于Javascript 内存解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8548802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com