JavaScript

书评《编写可测试的JavaScript代码》

今天写的书叫做《编写可测试的JavaScript代码》,英文原版名称《Testable JavaScript》,作者Mark Etban Trostlter,译者徐涛老师。我买到的是2015年2月第一版,印数3000册,字数31万。从出版信息可以看出这本书还是相当偏门的。好在时间上并不算很老,并且可以说是JavaScript里相当少见的专门谈论测试的书籍。…

深入JavaScript with语句

一般而言,所有写JS的人都有一个通常的概念:“不要用with语句”。这个准则毫无疑问一直是正确的,但要说为什么的话,并不是每个人可以回答的很好。是否去回答这个为什么并无多大意义,因为只须记住结果“不去用”就完全足够。然而去深入的理由还是有的,刚好最近有人这么问起我...刚好自己想总结一下...刚好这个题目作为草稿在博客后台躺了很久...但说到底,套用最新一话琦玉老师句式,“还是因为我很闲吧”... with语句 with的初衷是为了避免冗余的对象调用: foo.bar.baz.x = 1; foo.bar.baz.y = 2; foo.…

JavaScript的守望者

最近整理了一下收藏夹,发现了很多有趣的陈年旧物。好几百个链接,很多都已经过期了,相对来说依旧是国外的链接存活率要高的多,可见国内网站生存条件之不易。用以前团队同事的话来说,这是“清理体内残留的代码”。 今天要写的是IBM developerworks在2010-05-04发布的JavaScript 框架比较,到现在整整7年之久。毫无疑问2010年的我们还在挣扎在IE的泥潭里,如今回过头来看其实时间过得也相当快。当时这篇JavaScript 框架比较是相当全面的,作者从各个角度详尽对面了当时流行的JavaScript框架: Prototype jQuery YUI ExtJS MooTools 每一个都是前端耳熟能详的名字,但如今有些却已罕有听闻。截止本文发布,简单对比了一下Github的数据: Prototype jQuery YUI…

返读《PPK谈JavaScript》

《PPK谈JavaScript》(ppk on JavaScript)的作者ppk, Peter-Paul Koch一直是我所尊敬的大师,他的网站quirksmode.org也一直必备的参考资料。这也是为什么当我突然看到柜子里还有一本他早期的书的时候,尽管其中的内容已经相当的过时,但我还是拿起来打算好好看一遍。 ppk的这本书成书在2006年左右,前端刚刚兴起之时,内容相对于当时而言是相当不错的,只是放在现在难免显得过时无用。印象里这是淘宝UED早期翻译的第一批书之一,当时在图书馆里翻了几页买下后就一直没看过...就这么在书架上躺了快9年了吧,着实惭愧。回想起来,相比Zakas的系统化的《JavaScript高级程序设计》,ppk的这本内容就太散了,读起来有点像看博客的感觉,应该也是当时为什么自己放之于柜的主要原因吧。 翻开书,就仿佛是翻开历史的感觉...可能10年的时间对于互联网而言真的是相当漫长。如果是现在,…

完全理解JavaScript关键字this

这是一篇译文。当时看到原文的时候觉得内容非常易懂,是不可多得的好文。所以一开始就扔进草稿箱准备翻译,不过一晃好久过去了,最新发布的博文ID是1190,而这篇的ID是715,可见其在草稿箱里待了有多久。而这期间网络上也已经有了这篇文章的翻译稿,不过传播并不广泛,我搜索了下并没有多少索引和转发量。总体来说,已有的翻译稿总体来说也挺好,但是但从第二节开始,翻译变的有些随意,并且出现了很多偏差,有大有小,虽不影响阅读却多少妨碍理解。比如将“传递函数作为值”译成“传递函数的值”等等,这很容易引起混淆。另外还遗漏了一小部分内容的翻译,不知道是否是原作者后期更新内容所致。 个人挺喜欢这篇文章,所以网上虽已有一版,但还是希望用自己的翻译语言来描述一遍。尽管可能显得多余,…

JavaScript最小时间片

《高性能javascript》有一段“定时器的精度”,说的是JS的定时器并不精确,并且因为系统定时器分辨率的关系,JS的定时器最小值建议设置为25ms。并提到大多数浏览器在定时器延迟等于或者小于10ms时表现的并不一致。 其他我查到的资料也显示,在大部分的浏览器里不允许小于10ms的延时。来自微软方的资料则说这个精度最小是16ms。对于动画的时间片而言,16ms的精度正好对应约为60FPS。当然,还有各种其他说法。 比如,David Baron 在 setTimeout with a shorter delay 里说到: 小于10ms的延时会被强制延长,Chrome将这个延时缩减到2ms,但同时导致了一些问题。 不过我并没有在最新版本的Chrome里遇到他提到的“一些问题”,而且,…

那些JavaScript的细节问题(1)

JS写的多了以后,日常也就会遇到各种各样扯淡的问题。这些问题往往只是无关紧要的细枝末节,但偶尔有时候,也会给我们造成一些困扰。于是,我打算不时的拿出一些这类问题讨论和记录,这样,需要答案的人可以找到。没事看看的朋友,也可以当作消遣:) 鉴于这类问题浏览器相关性很强,所以每次我都有必要说明测试环境,我把它们写在最后,当我讨论这些问题的时候,都默认限制在这个测试环境之内。 1. alert() 内容为空时,出现什么? 先来一个比较简单的。如果你未曾尝试,想象一下,直接无参数调用 alert() 会跳出什么? Chrome 和 Safari 弹出内容是…

nodejs目录遍历

近期解决一个问题的时候,需要一个简单的目录遍历。目录遍历挺常见,操作一个文件夹里的所有文件,替换或者添加删除某些东西是非常普遍的操作。由于 nodejs 本身并没有提供类似的API,所以这部分就得由自己实现。 虽然没有直接的遍历API,但是 nodejs 的文件操作也已经非常便利,用 fs.readdir 和 fs.stat 这两个API的组合就能达到目的。 出于参半程序员的懒惰的劣根性,其实在这之前我也搜索过看看是否有现成的可以拿来用,也确实有这种完善的 module,比如 node-walk,我试用过后觉得还是非常不错的: var walk = require(…