javascript中的function.toString()

时间:2013-01-13 10:44:41

标签: javascript function tostring

我不明白 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

2 个答案:

答案 0 :(得分:3)

如果您尝试在字符串上下文中使用对象,则会通过调用它的toString()方法将其转换为字符串。

参见the specification

的第48页

答案 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}}