我不明白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
我不明白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
如果您尝试在字符串上下文中使用对象,则将通过调用它的toString()
方法将其转换为字符串。
事实上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)
将被视为对同一函数的再次调用并打印console.log(20 + 20);