Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将参数引入另一个函数_Javascript - Fatal编程技术网

Javascript 将参数引入另一个函数

Javascript 将参数引入另一个函数,javascript,Javascript,一个参数——另一个函数——并返回该函数的“记忆”版本。函数的“记忆”版本缓存并返回其调用的结果,以便在使用相同的输入再次调用时,它不会运行计算,而是从缓存返回结果。请注意,以前的结果应该可以按任何顺序检索,而无需重新计算 foo = function (x) { console.log("calculating!"); return x + 5; } var memoizedFoo = memoize(foo); memoizedFoo(5); // calculating! // 10

一个参数——另一个函数——并返回该函数的“记忆”版本。函数的“记忆”版本缓存并返回其调用的结果,以便在使用相同的输入再次调用时,它不会运行计算,而是从缓存返回结果。请注意,以前的结果应该可以按任何顺序检索,而无需重新计算

foo = function (x) {
console.log("calculating!");
return x + 5;
}

var memoizedFoo = memoize(foo);

memoizedFoo(5);
// calculating!
// 10

memoizedFoo(5);
// 10 (notice how 'calculating!' is not printed this time)

memoizedFoo(10);
// calculating!
// 15

我想问题是如何编写
备忘录
。您可以将给定参数的第一个结果存储在一个容器中,并返回一个函数,如果可以,该函数将使用该容器

下面是一个ES5示例,它仅适用于可以有效转换为字符串的参数值,如字符串、数字、布尔值:

函数记忆(f){
//存储此函数的结果
var values=Object.create(null);
返回函数(arg){
//已经有了吗?
if(Object.hasOwnProperty.call(values,arg)){
//是的,退掉它
返回值[arg];
}
//不,拿着它,记住它,然后归还它
返回值[arg]=f(arg);
};
}
var foo=函数(x){
console.log(“计算!”);
返回x+5;
};
var memoizedFoo=memoize(foo);
console.log(memoizedFoo(5));
//算计!
// 10
console.log(memoizedFoo(5));
// 10
console.log(memoizedFoo(10));
//算计!

//15
我想问题是如何编写
备忘录
。您可以将给定参数的第一个结果存储在一个容器中,并返回一个函数,如果可以,该函数将使用该容器

下面是一个ES5示例,它仅适用于可以有效转换为字符串的参数值,如字符串、数字、布尔值:

函数记忆(f){
//存储此函数的结果
var values=Object.create(null);
返回函数(arg){
//已经有了吗?
if(Object.hasOwnProperty.call(values,arg)){
//是的,退掉它
返回值[arg];
}
//不,拿着它,记住它,然后归还它
返回值[arg]=f(arg);
};
}
var foo=函数(x){
console.log(“计算!”);
返回x+5;
};
var memoizedFoo=memoize(foo);
console.log(memoizedFoo(5));
//算计!
// 10
console.log(memoizedFoo(5));
// 10
console.log(memoizedFoo(10));
//算计!

//15
简单的问题是什么?@T.J.Crowder,为什么会出错,我有这个问题要解决,但没有得到如何得到工作的答案,关键是你没有问过问题。简单的问题是什么?@T.J.Crowder,为什么会出错,我有这个问题要解决,但没有得到如何得到工作的答案,关键是你没有问过问题。