0%

JS 与 GoLang 的闭包

学习 golang 时,看到闭包部分,和 js 比较相似,但是敲错代码了,再加上对结果有点疑惑,就转译成 js 了,

然后发现自己 js 是不是白学了?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

1
2
3
4
5
6
7
8
9
10
11
12
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 是不是白学了?