我不明白 f.toString (不调用它)如何评估返回同一函数的结果?
function f(a){
console.log(a + a);
f.toString = function(){return a};// this part is
//confusing.
return f;
};
f(10) // 20
f(10)(20)// 20 40
答案 0 :(得分:3)
如果您尝试在字符串上下文中使用对象,则会通过调用它的toString()
方法将其转换为字符串。
答案 1 :(得分:3)
实际上,在您的方案中甚至没有调用f.toString
。如果你删除这一行 - 结果将是相同的。
f.toString()
,将会调用 console.log(f);
你的结果解释了:
f(10) // 20
使用参数f
调用函数10
,并将其打印到控制台console.log(10 + 10);
f(10)(20) // 20 40
第一部分如上所述,但f
函数也返回自己return f;
,这意味着第二部分(20)
将被视为再次调用同一函数并打印{ {1}}