Javascript toString覆盖函数返回类型

Javascript toString overwrite function return type

本文关键字:返回类型 函数 覆盖 toString Javascript      更新时间:2023-09-26

我是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()的返回类型?

alert(a)将调用a.toString()并显示其结果

默认函数toString() (Function.prototype.toString)返回函数的源。

如果您用自己的toString()替换它,它将返回您的函数返回的任何值。