google编程规范js部分笔记

语言规则:

1.总是用var声明变量

 

2.不要用const关键字,就用大写变量来表示

 

3.总是使用分号;特别注意函数声明后面。

 

4.嵌套函数很有用,多用用

 

5.不要在块中使声明函数:

别这么做:

if (x) {
  function foo() {}
}

这和ECMAScript不一致,在这里应该这样:

 if (x) {
  var foo = function() {}
}

 

6.不要在创建基本类型时用new

 

7.为构造函数添加函数最好用:

Foo.prototype.bar = function() {

  /* ... */}

 

8.用闭包,但是要小心 

    闭包是指有权访问其他函数作用域中的变量的函数。js中闭包是一个非常有用的东西。但是用闭包也要小心,因为闭包会引用包含它的函数的活动对象,所以有可能会引起内存无法销毁。例如:

function foo(element, a, b) {

  element.onclick = function() { /* uses a and b */ };

}

函数闭包引用了foo活动对象(element,a,b),而element也引用了闭包(通过onclick),这就产生了循环引用,此时就内存就不会被销毁。可以这么做:

function foo(element, a, b) {

  element.onclick = bar(a, b);

}

 

function bar(a, b) {

  return function() { /* uses a and b */ }

}

另一种情况例如上面的bar函数,如果声明一个变量将bar函数返回的函数(闭包)赋值给变量,那么函数执行完后闭包不会被销毁,因为有变量引用,这样的话bar函数也不会被销毁,因为闭包还有对其活动对象的引用。此时要对声明的变量赋值null。

 8.eval()只在序列化中使用

eval函数导致了复杂的语义并且当有有用户输入的时候会有危险。 

 

9.不要用with(){}

 

10.this只在构造函数,方法和闭包中使用。使用this比较容易出错。

 

11.for-in loop

不要在数组中使用,在类,映射和hash中使用就行。

 

12.不要将Array用作map/hash或关联数组。

 

13.不要这样做:

var myString = 'A rather long string of English text, an error message \

                actually that just keeps going and going -- an error \

                message to make the Energizer bunny blush (right through \

                those Schwarzenegger shades)! Where was I? Oh yes, \

                you\'ve got an error and all the extraneous whitespace is \

                just gravy.  Have a nice day.';

斜杠换成加号。

 

14.创建数组时不要用new Array,因为当第一个参数不是数字时将会有异常。所以一般用var str = [arg1,arg2...]。

类的创建不会有错,但是为了统一,类的创建也写成var obj = {arg1:arg1,arg2:arg2...}。

 

15.不要修改内建对象的prototype,即使是内建函数也尽量不要。

 

16.不要用浏览器的条件注释

posted @ 2012-10-29 23:29  plusice  阅读(230)  评论(0编辑  收藏  举报