我是JavaScript编程语言的新手,目前正在学习闭包。我知道如果我们警告返回函数的函数,我们将看到返回函数的源代码:
function sum(a) {
var sum = a
function f(b) {
sum += b
return f
}
f.toString = function() { return sum }
return f
}
var a=sum(2)(2)(2)(2); //why this sum function return sum
//instead of function f source code
alert(a);
在上面的代码中,为什么函数sum()
返回内部范围变量sum
而不是返回函数f
源代码。 toString
函数是否会覆盖函数sum()
的返回类型?
答案 0 :(得分:0)
alert(a)
会调用a.toString()
并显示其结果。
默认函数toString()
(Function.prototype.toString
)返回函数的来源。
如果您用自己的toString()
替换它,它将返回您的函数返回的任何内容。