Skip to content

JS 与 GoLang 的闭包比较

Published: at 02:27 PMSuggest Changes

学习 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 是不是白学了?


Previous Post
Go 语言切片:一个有趣的 append() 循环 bug
Next Post
CSS 禁用文本选择