第1页共130页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共130页第1章JavaScript语言基础对于任何语言来说,如何选用代码的写法和算法最终会影响到执行效率。与其他语言不同,由于JavaScript可用资源有限,所以规范和优化更为重要。代码结构是执行速度的决定因素之一:代码量少,运行速度不一定快;代码量多,运行速度也不一定慢。性能损失与代码的组织方式及具体问题的解决办法直接相关。程序通常由很多部分组成,具体表现为函数、语句和表达式,它们必须准确无误地按照顺序排列。优秀的程序应该拥有前瞻性的结构,可以预见到未来所需要的修改。优秀的程序也有一种清晰的表达方式。如果一个程序被表达得很好,那么它更容易被理解,进而能够成功地被修改或修复。JavaScript代码经常被直接发布,因此它应该自始至终具备发布质量。整洁是会带来价值的,通过在一个清晰且始终如一的风格下编写的程序会更易于阅读。JavaScript的弱类型和过度宽容特征,没有为程序质量带来安全编译时的保证,为了弥补这一点,我们应该按严格的规范进行编码。JavaScript包含大量脆弱的或有问题的特性,这些会妨碍编写优秀的程序。我们应该避免JavaScript中那些糟糕的特性,还应该避免那些通常很有用但偶尔有害的特性。这样的特性让人既爱又恨,避免它们就能避免日后开发中潜在的错误。建议1:警惕Unicode乱码ECMA标准规定JavaScript语言基于Unicode标准进行开发,JavaScript内核完全采用UCS字符集进行编写,因此在JavaScript代码中每个字符都使用两个字节来表示,这意味着可以使用中文来命名变量或函数名,例如:1.var人名="张三";2.function睡觉(谁){3.alert(谁+":快睡觉!都半夜三更了。");4.}5.睡觉(人名);虽然ECMAScriptv3标准允许Unicode字符出现在JavaScript程序的任何地方,但是在v1和v2中,ECMA标准只允许Unicode字符出现在注释或引号包含的字符串直接量中,在其他地方必须使用ASCII字符集,在ECMAScript标准化之前,JavaScript通常是不支持Unicode编码的。考虑到JavaScript版本的兼容性及开发习惯,不建议使用汉字来命名变量或函数名。由于JavaScript脚本一般都“寄宿”在网页中,并最终由浏览器来解析和执行,因此在考虑到JavaScript语言编码的同时,还要顾及嵌入页面的字符编码,以及浏览器支持的编码。不过现在的浏览器一般都支持不同类型的字符集,只需要考虑页面字符编码与JavaScript语言编码一致即可,否则就会出现乱码现象。第2页共130页第1页共130页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共130页当初设计JavaScript时,预计最多会有65536个字符,从那以后慢慢增长到了一百万个字符。JavaScript字符是16位的,这足够覆盖原有的65536个字符,剩下的百万字符中的每一个都可以用一对字符来表示。Unicode把一对字符视为一个单一的字符,而JavaScript认为一对字符是两个不同的字符,这将会带来很多问题,考虑到代码的安全性,我们应该尽量使用基本字符进行编码。建议2:正确辨析JavaScript句法中的词、句和段JavaScript语法包含了合法的JavaScript代码的所有规则和特征,它主要分为词法和句法。词法包括字符编码、名词规则、特殊词规则等。词法侧重语言的底层实现(如语言编码问题等),以及基本规则的定义(如标识符、关键字、注释等)。它们都不是最小的语义单位,却是构成语义单位的组成要素。例如,规范字符编码集合、命名规则、标识符、关键字、注释规则、特殊字符用法等。句法定义了语言的逻辑和结构,包括词、句和段的语法特性,其中段体现逻辑的结构,句表达可执行的命令,词演绎逻辑的精髓。段落使用完整的结构封装独立的逻辑。在JavaScript程序中,常用大括号来划分结构,大括号拥有封装代码和逻辑的功能,由此形成一个独立的段落结构。例如,下面这些结构都可以形成独立的段落。1.{2.//对象3.}4.function(){5.//函数6.}7.if(){8.//条件9.}10.for(){11.//循环12.}13.while(){14.//循环15.}16.switch(){17.//多条件18.}19.with(){20.//作用域21.}22.try{23.//异常处理第3页共130页第2页共130页编号:时间:2021年x月x日书山有...