在学习下划线记忆时,我不了解这一行:
“” var argString = Array.prototype.join.call(arguments,“ _”)。我知道它正在创建一个参数字符串,但是在这里适用吗?
_.memoize = function(func) {
var output = {};
return function(){
var argString = Array.prototype.join.call(arguments,"_");
if (output[argString] === undefined){
output[argString] = func.apply(this, arguments);
}
return output[argString];
};
};
最佳答案
在上面的代码中,最初会创建一个带有名称输出的对象。
接下来,根据参数创建对象的键。
例如:考虑一个功能,
function x(a,b,c){
// argument will be in an array form, but not an Array actually
console.log(argument) // will give array like structure.
}
现在,使用Array.prototype.join.call(arguments,“ _”);根据参数生成动态密钥。
下一个,
if (output[argString] === undefined){
output[argString] = func.apply(this, arguments);
}
这将检查输出对象中是否存在动态生成的密钥,
如果存在,它将在不调用函数的情况下返回值,否则将调用函数并将键和值缓存在输出对象中。
希望您了解其背后的逻辑。
关于javascript - 下划线从头开始记住,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31824097/