Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

关于“闭包”的翻译

  由于我对中文JavaScript相关资料阅读的比较少,所以我的文章在一些词汇的翻译上会和其它作者有些不同。有些词汇是无法意译的,在日文中对这些专业词汇基本都是用音译的,这可以避免很多问题。但是中文没有音译的传统,造成了很多不科学的翻译结果!
  “闭包”是什么东西?说白了就是“封闭的包”。在初等群论中集合内的元素不因某个运算产生集合以外的元素就叫做闭包。这个概念确实就是“封闭的包”,它翻译自“Closure”。然而在编程中也翻译成闭包?完全不是一个概念!这么翻译和这货有什么区别?
  之前吐槽“重载”这个词也是类似的问题。把“overload”直接机械翻译成“超载”,然后选了个“超载”的同义词“重载”来用。这就是“Fuck goods”(我日!这货!)
  编程中的Closure是一个概念,不是一种东西。不是函数,也不是变量,更不是一个闭合的包!它是为了方便描述某些编程语言中函数在栈区释放后的内存驻留现象而引入的一个词,这和“闭包”完全是八竿子打不着边的。
  我觉得“闭包”这个词用来描述函数作用域更合理!在函数中,局部变量不会污染到外部作用域,这才有“闭合的包”这样的概念。理解为局部变量被封闭在函数作用域这个包中。这不就是Scope吗?不对!Scope只是作用域而已,并没有特指函数作用域,ES6中允许使用块作用域,而在块作用域中var定义的变量依然会污染到外部作用域,所以我们需要一个词来描述这个“Function Scope”,这时候用“闭包”这个词就非常确切。
  我的文章中“闭包”指的是“Function Scope”,而“Closure”翻译成“可持续闭包”。实际上“Closure”的概念并不会经常谈论到,“Function Scope”倒是经常会用到。为什么“Closure”这东西大家这么喜欢谈论?不是因为它使用广泛,而是因为翻译成“闭包”被理解成了“Scope”。人们真正对这个词的需求是“Function Scope”。
  现在这些词已经被大家玩坏了,对于一些渣翻译的词最好直接用原版的词汇吧。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^