首页 > 代码库 > 编写高质量JS代码的68个有效方法(二)

编写高质量JS代码的68个有效方法(二)

 

[20141011]编写高质量JS代码的68个有效方法(二)

<style></style>

No.6、了解分号插入的局限性

Tips:

  1. 仅在“}”标记之前、一行的结束和程序的结束处推导分号
  2. 仅在紧接着的标记不能被解析的时候推导分号
  3. 在以(、[、+、-或/字符开头的语句前绝不能省略分号
  4. 当脚本连接的时候,在脚本之间显式的插入分号
  5. 在return、throw、break、continue、++或--的参数之前绝不能换行
  6. 分号不能作为for循环的头部和空语句的分隔符而被推导出
  7. 个人总结:尽量不要省略分号,不要让JS自动推导

分号仅在}标记之前、一个或多个换行之后和程序输入的结尾被插入,看代码:

// 能自动推导分号function square(x){    var n = +x    return n*n}// Error,不能自动推导function square(x){var n = +x return n*n}

分号仅在随后的输入标记不能被解析时插入,看代码:

a=b(f());此时,代码等价于 ab(f());但是:a=bf()则会被解析为a=b f();

在以(、[、+、-或/字符开头的语句前,绝不能省略分号,看代码:

a=b[‘a‘,‘b‘,‘c‘].forEach(function(key){    console.log(key)})等价于a=b[‘a‘,‘b‘,‘c‘].forEach(function(key){    console.log(key);});a=1/Error/i.test(‘test‘)等价于a=1/Error/i.test(‘test‘);

合并脚本时不能省略分号,看代码:

//file1.js(function(){console.log(‘file1‘)})()//file2.js(function(){console.log(‘file2‘)})()//合并后 --输出file1,然后报错(function(){console.log(‘file1‘)})()(function(){console.log(‘file2‘)})()

为了防止自己写的库在合并时内其他代码干扰,所以一般写法为如下代码:

;(function(){     /*Code*/ })();

在return、throw、break、continue、++或--的参数之前绝不能换行,看代码:

a++b等价于:a;++b;

for循环中不要省略分号

//Parse Errorvar total=0for(var i=0,total=1    i<n    i++){    total*=i}

综上,再次强调,不加分号看起来代码轻量,但稍不注意就会引起很多bug,所以,建议都加上分号,不要让JS环境自行推导

No.7、视字符串为16位的代码单元序列

待定...

No.8、尽量少用全局对象

Tips:

  1. 避免申明全局变量
  2. 尽量申明局部变量
  3. 避免对全局对象添加属性
  4. 使用全局对象来做平台特性检测

定义全局变量会污染共享的公命名空间,并可能导致意外的命名冲突。全局变量不利于模块化,因为它会导致程序中独立组件间的不必要耦合。

No.9、始终声明局部变量

Tips:

  1. 始终使用var声明新的局部变量
  2. 考虑使用lint工具来帮助检查未绑定的变量

如果存在比全局变量更麻烦的事情,那就是意外的全局变量。由于不适用var申明的变量,统统为全局变量,所以一定要使用var来定义变量,防止变量污染。

function test(){    test=‘test‘;}test();window.test;// ‘test‘

No.10、避免使用with

Tips:

  1. 避免使用with语句
  2. 使用简短的变量名代替重复访问的对象
  3. 显式地绑定局部变量到对象属性上,而不要使用with语句隐式地绑定他们

待定...

 

编写高质量JS代码的68个有效方法(二)