【发布时间】:2013-01-13 10:44: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
【问题讨论】:
-
我看不出你从哪里得到返回值
10。f(10)在控制台中为我提供20。 -
如果您删除
toString分配,您会得到相同的结果,不是吗?它在这里不做任何事情。请参阅:jsfiddle.net/AhCtn。 -
我们应该区分函数结果和从函数内部生成的控制台输出。控制台将显示 f(10) 为 20,而 toString 将结果为 10。 f(20) 相同,根据使用情况为 40 或 20。 console.log(f(10)) 应该在日志中显示 20 10。
-
也许
+令人困惑:它不仅仅是字符串连接运算符,还有算术加法运算符。如果你改用"" + a + a,你会得到1010和2020。也许这就是你的目的。
标签: javascript function tostring