第七章 正则表达式
正则表达式是处理字符串的最强道具,没有之一。
通过正则表达式,我们可以非常简便的对字符串进行各种操作,这里就对此就不对这章进行总结,之后对正则表达式进行一次专门的总结。
第八章 方法
‘+’运算符在较新的浏览器中,进行过较多的优化,会对该运算符进行优化,比array.join函数运行速度要快的多。
array
Array.concat和Array.slice函数可以生成新的数组。
Array.shift函数通常比pop速度要快。
在使用Array.sort回调函数中,默认会将数组元素当做字符串进行比较。同样,该方法是不稳定的(其方法稳定性根据不同的浏览器实现不同),使用sort().sort(),这样的链式操作,是无法获得稳定的排序,所以,应该避免使用sort函数的链式操作。
Array.unshift方法将返回新数组的长度,而ie6浏览器对unshift函数的实现有错误,总是返回undefined。
number
number.toFixed方法和number.toPrecision方法的差别在于,toFixed方法支持的参数值在0~20,而toPrecision函数支持的参数范围为0~21。
number.toString函数的参数代表进制,默认为10,可以给他设定为任意数字,当然通常设定为整数,通过这个方法可以很简单的生成随机数,比如Math.random().toString(36).substr(3)
,即可生成一个随机数。
regexp
regExp.exec方法虽然强大,但是也是最慢的函数,他会使用前向匹配的技术,不断的重新扫描已扫描过的字符串,当有g这个修饰符的时候,其性能会进一步降低。
regexp.text方法虽然简单,但是是最快的函数,不要对他使用g标识,因为没有用。
string
string.match方法会对一个正则表达式进行匹配,如果表达式没有待用g标识,那么他的效果和regexp.test相同,如果他带有g标识,那么它生成一个包含所有匹配(非捕获分组之外)的数组。
如果string.replace方法在当第二参数是字符串,那么字符$有特别的含义,具体如下:
美元符号序列 | 替换对象 |
---|---|
$$ | $字符的转义 |
$& | 整个匹配的文本 |
$number | 分组捕获的文本 |
$` | 匹配之前的文本 |
$’ | 匹配之后的文本 |
而当第二个参数为函数时,其参数为 ($&, $1……$9
)的排列。
string.split方法有第二个参数,用于限制返回数组的大小。当第一参数为正则表达式时,将会把来自分组捕获的文本包含到分割后的数组中。同时,ie8之前的浏览器会在输出数组中排除空字符串。
string.toLocalLowerCase,主要用在土耳其语上,因为在土耳其语中‘I’转义为‘l’而不是i。
第九章 代码风格
优秀的程序拥有前瞻性的结构,它会预见未来可能需要的修改,而又不会让其成为过度的负担。
注意把{放在一行的结尾而不是下一样的开头,因为它会避免js的return语句中一个可怕的设计错误。
努力保持注释是最新的,错误的注释甚至比没有注释更加糟糕。
当程序不能自我说明的时候,需要编写注释,注释必须时有意义的,显而易见的代码无需注释。
代码中应该更多的使用行注释,块注释往往用于正式的文档记录和注释。
对于脚本应用和工具库,我只使用唯一一个全局变量。每个对象都有自己的命名空间,以方便管理代码。
更多编码风格可以参见第五部分
最后本读书笔记将于第五部分结束,第五部分将总结被本书作者认为是优美的特性,以及毒瘤和糟粕,同时给出个人总结的javascript代码编写规范ppt。
更多内容请查看zakwu的小站