gpt4 book ai didi

带有 toString 的 Javascript 嵌套函数

转载 作者:行者123 更新时间:2023-11-30 06:38:25 26 4
gpt4 key购买 nike

谁能解释一下这段代码?此示例取自 javascript.info。

我不明白,尤其是 f.toString = function(){ return sum} 部分。

function sum(a) {

var sum = a

function f(b) {
sum += b
return f
}

f.toString = function() { return sum }

return f
}

alert( sum(1)(2) ) // 3

alert( sum(5)(-1)(2) ) // 6

alert( sum(6)(-1)(-2)(-3) ) // 0

alert( sum(0)(1)(2)(3)(4)(5) ) // 15

最佳答案

我认为该片段的作者想要实现一个目标,即“伪造”运算符重载,这在其他语言中是可能的。

因为 sum 返回一个函数引用,我们不能像这样

sum(5) + 5;

这会导致一些奇怪的事情,比如 "function sum() { ... }5"。这是因为 ECMAscript 在 Math 操作中调用对象时会调用对象的 .toString() 方法。但由于他覆盖了返回 sum(这是一个数字)的 .toString() 方法,它再次起作用。

关于带有 toString 的 Javascript 嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13104930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com