在《JavaScript模式》一书中,提到:
函数可以在运行时动态创建,还可以在程序执行过程中创建。
我的疑问是,运行时和程序执行过程中不是一回事吗?有何区别?
天蓬老师2017-04-10 15:01:48
经查,是因为中文版的翻译问题。
原书的CHAPTER 4里,原文如下:
Functions are objects that:
• Can be created dynamically at runtime,during the execution of the program
中文版翻译成了
函数可以在运行时动态创建,还可以在程序执行过程中创建。
《JavaScript模式》这本书的中文版是中国电力出版社出版的,翻译质量特别差,早在三年前就被很多前端码农们吐槽过了。
我推荐你抛弃这本书,以免收到毒害,你可以看英文原版 http://item.jd.com/19177771.html
如果觉得英文看起来吃力,也可以看看民间翻译版,翻译质量比那实体书高多了。
在github可以看到民间版:
https://github.com/TooBug/javascript.patterns/blob/master/chapter4.markdown
ringa_lee2017-04-10 15:01:48
咳...我英语是纯粹的渣渣。但是这句话我觉得也应该翻译成:可以在程序执行的时候动态创建。
during应该承接上半句才对吧~
动态创建不是指二楼同学说的,二楼同学所指的是定义函数的不同的方法。
function foo(){} // 预编译的时候会将其提到顶部,所以可以在任意位置调用
var foo = function(){} // 不会提升,只能在foo之后调用
动态创建函数更多见于框架或者模板引擎中,创建格式如下
var foo = new Function('arg1', 'arg2', 'functionBody');
另外,个人觉得看技术书籍不用太咬文嚼字,因为有的字真的是错的...