手记

写一篇我所理解的javascript编程规范

1.使用4个空格为缩进层级.(或者按tab制表符键)
2.不要省略分号
3.将一行长度限定为80个字符,超出则换行(在运算符后换行,下一行增加两个层级的缩进)
4.适当增加空行,提高可读性.比如:方法之间,多行或单行注释之前,在方法内的逻辑片段之间插入空行。
5.命名:遵循驼峰大小写命名法。变量以名词命名,方法以动词命名.尽量简短。
can,has,is 返回一个布尔值
get,find,read 返回一个非布尔值
set 用来保存一个值
常量,采用大写字母和下划线来命名,下划线用以分隔单词。MAX_COUNT
构造函数采用驼峰命名法,第一个字母也大写.通常以名词来命名
6.使用双引号来括住字符串。
7.null的使用
null是一个特殊值和undefind不同。
使用null的场景:
1.用来初始化一个变量,这个变量可能赋值为一个对象。
2.用来和一个已经初始化的变量比较,这个变量可以也可以不是一个对象
3.当函数的参数期望是对象时,用做参数传入
4.当函数的返回值期望是对象时,用作返回值传出
不推荐使用的场景
1.不要使用null来检测是否传入了某个参数
2.不要用null来检测一个未初始化的变量
8.undefined的使用.表示声明但是未赋值的变量也可能是未声明的变量或方法。由于typeOf无法区分是未声明
还是未赋值。所以尽量禁用undefined。比如:
var person = null.而不要 var person;
9.使用对象直接量创建对象.
第一行包含左花括号,每个属性名称独占一行,并且保持一个缩进.最后右花括号也独占一行。
//好的写法
var book={
title:"编写风格",
author:"张三"
};
10.推荐使用数组直接量来定义数组

注释.............................................

1.单行注释以两个斜线开始,以行尾结束.独占一行上方空一行,且与本行代码保持同缩进。
2.多行注释。以/开始,/结束。采用java风格.多行注释至少包含3行。第一行/独占一行,第二行以开头,和上一行的保持左对齐,注释开始,最后一行/独占一行
/*

  • 我是多行注释
    */
    3.何时添加注释.当代码不够清晰时添加注释.

    //初始化count,画蛇添足
    var count = 10;

    //好的写法

    //改变这个值可能会让它变成青蛙
    var count = 10;

语句和表达式.......................................

1.if和for即使只有一行,也要带有花括号.花括号风格采用.第一个花括号在第一行的末尾方式.
在括左圆括号之前和右圆括号之后各添加一个空格。比如:

if (true) {

    //dosometing......

}
2.switch格式.case和switch左对齐.case之间没有空行.连续执行的case需要加注释说明.

switch (condition) {
case "first":
        //代码
        break;

case "second":
//代码
break;
}
3.禁用with
4.尽量避免使用continue,来增强代码的可读性。
5.for-in的使用,必须带有object.hasOwnProerty来避免遍历原型连中的属性.不能用for-in来遍历数组。
var prop;
for (prop in object) {
if (object.hasOwnProperty(prop)) {
console.log(" name is "+prop);
console.log(" value is "+object[prop]);
}
}

变量函数和运算符.......................................

1.变量的声明。由于javascript是变量提前的.所以局部变量的定义作为函数内第一条语句。比如:

function doSometingWithItems(items){

        var i,len;
        var value = 10;
        var result = value+10;

        for (i=0,len=items.length;i<len;i++) {
            doSometing(items[i]);
        }
    }
    当无关联的变量声明时,尽量合并var.
    var value = 10,
        result = value+10,
        i,
        len;

2.函数的声明.虽然函数声明会被javascript引擎提前,还是要求函数调用在函数声明之后。
即先声明,再调用.
函数内部的函数声明,要紧接着变量声明之后声明
函数声明不应该出现在语句块内。比如:错误写法

if (true) {
        function doSometing(){
            alert('h1');
        }
    }
函数名和左括号之间不能有空格.doSometing(item);这个明显区别于if,while等语句块。

3.立即执行的函数.javascript中允许匿名函数.比如:

//将匿名函数赋值给一个变量
var book = function(){

};

//对于立即执行的函数.需要在匿名函数上增加小括号
var book = (function(){
//doSomething
})();

4.需要做全等和全不等比较时。尽量用===和!==
5.禁止使用eval()和new Function,禁止给setTimeout和setInterval传入字符串参数
6.在css中,一定要杜绝使用css中的js表达式。(IE9已经不再支持.)比如:

.box{
        width:expression(document.body.offsetWidth+"px");
    }

7.最好将所有的javascript代码都放入外置文件中,以确保在HTML代码中不会有内联的javascript代码
8.尽量避免innerHTML方法,可以1.从远程服务器加载,2.加载外部html片段,3写替换函数.替换标识。

避免使用全局变量.......................................

1.尽量使用单全局变量.比如:
YUI定义了唯一全局对象YUI
jQuery定义了两个全局对象 $和jQuery 当$被其他类库使用时可以使用jQuery
Dojo定义了dojo

2.javascript中字符串,数字,布尔值,null和undefined是原始类型。判断原始类型可以用typeOf。

3.除了原始类型都是引用类型.不能用typeOf来判断了.因为都返回object.
检测自定义类型可以用instanceof来检测,function用 typeOf来检测,数组用鸭式辨形法.

function isArray(value){
if( typeof Array.isArray === "function" ){
return Array.isArray(value);
} else {
return Object.prototype.toString.call(value) === "[Object Array]";
}
}

4.检测对象中是否包含某个属性,用in来判断.

配置数据......................................

1.可配置的数据,最好单独存放在一个文件里
url
需要展现给用户的字符串
重复的值
设置(比如每页的配置项)
任何可能发生变更的值

var config = {
    MSG_INVALID_VALUE:"Invalid value",
    URL_INVALID:"/error/index.jsp",
    CSS_SELECTED:"selected"
}

2.适当的抛出异常.throw new Error("");javascript可以 throw 任何东西。但是有些浏览器会不认
尽量throw new Error("");

3.TODO,对于需要以后处理的地方 必须加入//TODO{注解}

21人推荐
随时随地看视频
慕课网APP