学习 golang 时,看到闭包部分,和 js 比较相似,但是敲错代码了,再加上对结果有点疑惑,就转译成 js 了,
然后发现自己 js 是不是白学了?
package main
import "fmt"
func main() {
var f = Adder()
fmt.Print(f(1), " - ")
fmt.Print(f(20), " - ")
fmt.Print(f(300))
}
func Adder() func(int) int {
var x int
return func(delta int) int {
x += delta
return x
}
}
输出:1 - 21 - 321
转译成 js
function add() {
let x = 0;
return function (data) {
x += data;
return x;
};
}
let f = add();
console.log(f(1));
console.log(f(20));
console.log(f(300));
输出结果 1 21 321
好家伙,我这个 js 是不是白学了?