近期做语法高亮项目的副产品,是统计了一下几个主流JS工具包中各关键字的使用频率。虽然不同代码库的前五位的关键字的顺位有所差别,但是与五名之后的差距都是非常显著,第五位都要比第六位多至少一倍,前五位关键字占所有关键字比例都超过60%,最多的Prototype库甚至超过90%。
以下顺位为我综合各关键字在各个代码库中的排位以及其他因素所评定:
第五位:[b]var[/b]
未声明就使用的全局变量是bug之源,所以基本上有多少变量就应该有多少var。不过因为多个变量可以用一句var来声明,所以var谦虚的位于第五位。
第四位:[b]return[/b]
有多少function,就有多少return,一些function还有多个return。虽然也有不少function什么都不return,但是就面向对象而言,你可以return this来构成链式操作,就函数式编程来说,一切函数都应该有返回值。return在排位上本来可以更靠前,不过它是附属于function的,并且未来JS语言的改进会使得return关键字在大多数时候都能省略,所以其排位掉出三甲。
第三位:[b]funcion[/b]
function可以说是JS编程的核心概念。去掉this关键字,我们仍然还能写JS代码,少了function关键字,我们可就什么都干不了了。作为一个如此常用的关键字,function有整整8个字母长,如果像许多语言那样改用def,甚至在某些语境下可以完全省略的话(比如groovy中可以这样:[1,2,3].each{print(it)}),我们的手指头可要轻松许多了——可惜语言标准委员会一点都不为我们考虑,未来我们还将一遍又一遍的狂打f,u,n,c,t,i,o,n。我们多么希望能少打点function啊。有鉴于此,function在排位上屈居第三。
第二位:[b]this[/b]
this可以说是“OO”的标志。在“非常OO”的Ext中,this甚至以超过后四位总和,占所有关键字43%的压倒性优势排名第一。然而许多语言里,this都可以省略,只是在JavaScript中,每次都要明确的告诉它是this不是that,所以this才泛滥成灾……故此,多到令人生厌的this只能排名第二。
------------------------- 猥琐的分割线 -------------------------
第一位:[b]if[/b]
其实我们人生的大部分精力都是花在Yes Or No的问题上,写程序也不例外。所以if这个最最寻常不过,也是最短的关键字,在排位上能雄踞榜首也就顺理成章了。
附录:统计数据
代码库:
1. jQuery 1.3.2
2. Prototype 1.6.0.3
3. Base2 1.0
4. Ext 2.0.2
5. Dojo 0.4.3
以下,Total为所有关键字的出现次数。关键字对应的三栏数据分别为出现次数、占所有关键字比例、从多到少的排位。
jQuery Prototype Base2 Ext Dojo
------------------------------------------------------------------
Total 2534 2872 1148 24779 6195
------------------------------------------------------------------
if 475 19% 1 395 14% 4 150 13% 5 3022 12% 2 1002 16% 1
return 313 12% 4 576 20% 1 162 14% 4 1739 7% 5 613 10% 5
function 365 14% 3 538 19% 2 210 18% 1 2808 11% 3 799 13% 3
this 455 18% 2 474 17% 3 201 18% 2 10649 43% 1 809 13% 2
var 263 10% 5 347 12% 5 164 14% 3 2348 9% 4 744 12% 4