编写高质量代码改善JavaScript程序的188个建议(1-78)

上传人:cl****1 文档编号:506684522 上传时间:2023-10-18 格式:DOCX 页数:129 大小:935.58KB
返回 下载 相关 举报
编写高质量代码改善JavaScript程序的188个建议(1-78)_第1页
第1页 / 共129页
编写高质量代码改善JavaScript程序的188个建议(1-78)_第2页
第2页 / 共129页
编写高质量代码改善JavaScript程序的188个建议(1-78)_第3页
第3页 / 共129页
编写高质量代码改善JavaScript程序的188个建议(1-78)_第4页
第4页 / 共129页
编写高质量代码改善JavaScript程序的188个建议(1-78)_第5页
第5页 / 共129页
点击查看更多>>
资源描述

《编写高质量代码改善JavaScript程序的188个建议(1-78)》由会员分享,可在线阅读,更多相关《编写高质量代码改善JavaScript程序的188个建议(1-78)(129页珍藏版)》请在金锄头文库上搜索。

1、编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页 共1页第1章 JavaScript语言基础对于任何语言来说,如何选用代码的写法和算法最终会影响到执行效率。与其他语言不同,由于JavaScript 可用资源有限,所以规范和优化更为重要。代码结构是执行速度的决定因素之一:代码量少,运行速度不一定快;代码量多,运行速度也不一定慢。性能损失与代码的组织方式及具体问题的解决办法直接相关。程序通常由很多部分组成,具体表现为函数、语句和表达式,它们必须准确无误地按照顺序排列。优秀的程序应该拥有前瞻性的结构,可以预见到未来所需要的修改。优秀的程序也有一种清晰的表达方式。如果一个程序被

2、表达得很好,那么它更容易被理解,进而能够成功地被修改或修复。JavaScript代码经常被直接发布,因此它应该自始至终具备发布质量。整洁是会带来价值的,通过在一个清晰且始终如一的风格下编写的程序会更易于阅读。JavaScript的弱类型和过度宽容特征,没有为程序质量带来安全编译时的保证,为了弥补这一点,我们应该按严格的规范进行编码。JavaScript包含大量脆弱的或有问题的特性,这些会妨碍编写优秀的程序。我们应该避免JavaScript中那些糟糕的特性,还应该避免那些通常很有用但偶尔有害的特性。这样的特性让人既爱又恨,避免它们就能避免日后开发中潜在的错误。建议1:警惕Unicode乱码ECM

3、A标准规定JavaScript语言基于Unicode标准进行开发,JavaScript内核完全采用UCS字符集进行编写,因此在JavaScript代码中每个字符都使用两个字节来表示,这意味着可以使用中文来命名变量或函数名,例如:1. var人名=张三; 2. function睡觉(谁) 3. alert(谁+:快睡觉!都半夜三更了。); 4. 5. 睡觉(人名);虽然ECMAScript v3标准允许Unicode字符出现在JavaScript程序的任何地方,但是在v1和v2中,ECMA标准只允许Unicode字符出现在注释或引号包含的字符串直接量中,在其他地方必须使用ASCII字符集,在EC

4、MAScript标准化之前,JavaScript通常是不支持Unicode编码的。考虑到JavaScript版本的兼容性及开发习惯,不建议使用汉字来命名变量或函数名。由于JavaScript脚本一般都“寄宿”在网页中,并最终由浏览器来解析和执行,因此在考虑到JavaScript语言编码的同时,还要顾及嵌入页面的字符编码,以及浏览器支持的编码。不过现在的浏览器一般都支持不同类型的字符集,只需要考虑页面字符编码与JavaScript语言编码一致即可,否则就会出现乱码现象。当初设计JavaScript时,预计最多会有 65 536个字符,从那以后慢慢增长到了一百万个字符。JavaScript字符是1

5、6位的,这足够覆盖原有的65 536个字符,剩下的百万字符中的每一个都可以用一对字符来表示。Unicode把一对字符视为一个单一的字符,而JavaScript认为一对字符是两个不同的字符,这将会带来很多问题,考虑到代码的安全性,我们应该尽量使用基本字符进行编码。建议2:正确辨析JavaScript句法中的词、句和段JavaScript语法包含了合法的JavaScript代码的所有规则和特征,它主要分为词法和句法。词法包括字符编码、名词规则、特殊词规则等。词法侧重语言的底层实现(如语言编码问题等),以及基本规则的定义(如标识符、关键字、注释等)。它们都不是最小的语义单位,却是构成语义单位的组成要

6、素。例如,规范字符编码集合、命名规则、标识符、关键字、注释规则、特殊字符用法等。句法定义了语言的逻辑和结构,包括词、句和段的语法特性,其中段体现逻辑的结构,句表达可执行的命令,词演绎逻辑的精髓。段落使用完整的结构封装独立的逻辑。在JavaScript程序中,常用大括号来划分结构,大括号拥有封装代码和逻辑的功能,由此形成一个独立的段落结构。例如,下面这些结构都可以形成独立的段落。1. 2. /对象 3. 4. function() 5. /函数 6. 7. if() 8. /条件 9. 10. for() 11. /循环 12. 13. while() 14. /循环 15. 16. switc

7、h() 17. /多条件 18. 19. with() 20. /作用域 21. 22. try 23. /异常处理 24. 段落结构包含的内容可以是一条或多条语句。可以在段落起始标记()前面添加修饰词,如域谓词(with、catch)、逻辑谓词(if、while、for、switch等)、函数谓词(function fn(arg))等。语句是由多个词构成的完整逻辑。在JavaScript中,常用分号(;)来划分语句,有时也可以省略分号,默认使用换行符表示完整的语句。一条语句可以包含一个或多个词。例如,在下面两条语句中,第一条语句只有一个词,这是一个指令词,该指令只能位于循环体或switch结

8、构体内。第二条语句包含3个词,alert表示函数名(即变量),小括号表示运算符,而“提示信息”表示字符串直接量。1. break; 2. alert(提示信息);一条语句也可以包含一个或多个段落。例如,在下面这条语句中,直接把一个函数当做一个变量进行调用。1. (function(i) 2. alert(i); 3. )(提示信息);还可以把函数包含在一个闭包中形成多个结构嵌套,这个嵌套结构体就构成了一个复杂的语句,例如:1. (function(i) 2. returnfunction() 3. alert(i); 4. ; 5. )(提示信息)();语句一般至少包含一个词或段落,但是语句也

9、可以什么都不包含,仅由一个分号进行标识,这样的句子称为空语句。空语句常用做占位符。例如,在下面这个循环体内就包含了一个空语句。 1. for(vari;i100;i+) 2. ; 3. 词语是JavaScript句法结构中的最小语义单位,包括指令(或称语句)、变量、直接量(或常量)、运算符等。在JavaScript中,词语之间必须使用分隔符进行分隔,否则JavaScript就会错误解析。下面的代码块是一个简单的求两个数平均值的方法。1. vara=34; 2. varb=56; 3. functionaver(c,d) 4. return(c+d)/2; 5. 6. alert(aver(a,

10、b);其中var、function、return是指令,这些指令也是JavaScript默认的关键字;a、b、c、d、aver、alert为变量;34、56是数值直接量;=、(、)、/、+、,是运算符。建议3:减少全局变量污染定义全局变量有3种方式:在任何函数外面直接执行var语句。1. varf=value;直接添加一个属性到全局对象上。全局对象是所有全局变量的容器。在Web浏览器中,全局对象名为window。 1. window.f=value;直接使用未经声明的变量,以这种方式定义的全局变量被称为隐式的全局变量。 1. f=value;为方便初学者在使用前无须声明变量而有意设计了隐式的全

11、局变量,然而不幸的是忘记声明变量成了一个非常普遍的现象。JavaScript的策略是让那些被忘记预先声明的变量成为全局变量,这导致在程序中查找Bug变得非常困难。JavaScript语言最为糟糕的就是它对全局变量的依赖性。全局变量就是在所有作用域中都可见的变量。全局变量在很小的程序中可能会带来方便,但随着程序越来越大,它很快变得难以处理。因为一个全局变量可以被程序的任何部分在任意时间改变,使得程序的行为被极大地复杂化。在程序中使用全局变量降低了程序的可靠性。全局变量使在同一个程序中运行独立的子程序变得更难。如果某些全局变量的名称与子程序中的变量名称相同,那么它们将会相互冲突并可能导致程序无法运

12、行,而且通常还使程序难以调试。实际上,这些全局变量削弱了程序的灵活性,应该避免使用全局变量。努力减少使用全局变量的方法:在应用程序中创建唯一一个全局变量,并定义该变量为当前应用的容器。1. varMy=; 2. My.name= 3. first-name:first, 4. last-name:last 5. ; 6. My.work= 7. number:123, 8. one: 9. name:one, 10. time:2012-9-1412:55, 11. city:beijing 12. , 13. two: 14. name:two, 15. time:2012-9-1212:4

13、2, 16. city:shanghai 17. 18. ;只要把多个全局变量都追加在一个名称空间下,将显著降低与其他应用程序产生冲突的概率,应用程序也会变得更容易阅读,因为My.work指向的是顶层结构。当然也可以使用闭包体将信息隐藏,它是另一种有效减少“全局污染”的方法。在编程语言中,作用域控制着变量与参数的可见性及生命周期。这为程序开发提供了一个重要的帮助,因为它减少了名称冲突,并且提供了自动内存管理。1. varfoo=function() 2. vara=1,b=2; 3. varbar=function() 4. varb=3,c=4;/a=1,b=3,c=45. a+=b+c;/

14、a=8,b=3,c=46. ;/a=1,b=2,c=undefined7. bar();/a=21,b=2,c=undefined8. ;大多数采用C语言语法的语言都拥有块级作用域。对于一个代码块,即包括在一对大括号中的语句,其中定义的所有变量在代码块的外部是不可见的。定义在代码块中的变量在代码块执行结束后会被释放掉。但是,对于JavaScript语言来说,虽然该语言支持代码块的语法形式,但是它并不支持块级作用域。JavaScript支持函数作用域,定义在函数中的参数和变量在函数外部是不可见的,并且在一个函数中的任何位置定义的变量在该函数中的任何地方都可见。其他主流编程语言都推荐尽可能迟地声明变量,但是在JavaScript中就不能够这样,因为它缺少块级作用域

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号