前言:javascript编码规范的制定让代码变得简洁易读的同时也可以方便许久之后代码的维护和他人的阅读。

一、javascript 书写位置

1.引入外部 js 文件

格式:

<script src=”aaa.js”></script>

注:

  • html和jsp页面中不允许将后面那个标签去掉
  • ECMA第五版规定 type 属性不写时默认为 type=”text/javascript”,因此省略这个属性。

2.自己写js 代码

<script>
  // 自定义的 js 代码
</script>

3.标签的位置

如果将 <script> 标签放到 <head> 标签中,等待外部js 文件全部下载、解析并执行完之后才能解析 <body> 中的元素,这会造成打开页面时会出现短暂的吃顿现象。
    因此我们要求将 <script> 标签放到 <body> 元素中,并且置于 <body> 元素中的 html 代码的最下面。

4.推荐

将 html 代码和 js 代码分离,也就是将 js 代码全部写到一个独立的以 *.js 的文件中,再通过引入外部js 的方式引入到页面中。可以增加代码的美观性和方便后期代码维护。

二、命名规范

1.区分大小写

Javascript 中的一切(如:变量、函数名和操作符)都区分大小写。

如:

  • 变量名 test 和变量名 Test 就是两个变量。
  • typeof 作为关键字不能作为变量名,但typeOf就可以作为变量名了,因为它是一个新的变量。

2.标识符

标识符:变量、函数、属性和函数参数的名字。

推荐命名规则:

  • 第一个字符必须是字母或下划线(_)或美元符号($);
  • 其它字符可以是字母或下划线或美元符号或数字;
  • 用全英文命名的,采用驼峰大小写格式。即第一个字母小写,后面每个有意义的首字母大写。
    如:firstSecond myCar
  • 标识符不能是关键字、保留字、true、false、null。

3.关键字和保留字

在使用中有不熟悉的关键字和保留字可查询下表:

关键字有:(javascript 中有意义的单词)ECMA第五版




break

do

instanceof

typeof

case

else

new

var

catch

finally

return

void

continue

for

switch

while

debugger

function

this

with

default

if

throw

try

delete

in


保留字有:(javascript 中暂时没有意义,以后可能被用作关键字的单词)ECMA第三版




abstract

enum(枚举)

int

short

boolean

export

interface

static

byte

extends

long

super

char

final

native

synchronized

class

float

package

throws

const

goto

private

transient

double

implements

protected

volatile

yield

import

public

let


三、注释

1.单行注释

// 单行注释

2.多行注释

/*
 * 这是一个多行注释
 * 多行注释的第二行
 */

3.方法注释

方法的注释一般应注明方法是干什么用的,注意事项是什么,参数含义,返回数据信息。
/**
 * 主要功能:生成随机数
 * 注意事项:此方法只能生成11-15位的随机数
 *
 * @param size 生成随机数的长度,范围在数字11~14之间
 * @return number 随机数
 */
function getRandom (size) {

    return Math.random().toString(16).substr(2, size);
}

四、严格模式

'use strict';

    严格模式 可以将js 代码中的一些不确定行为得到处理,对某些不安全的操作也会抛出错误,强制性的将js 代码变得更加规范和不容易出错。
    上述看似字符串的xx 实际上是一个编译指示,用于告诉Javascript 引擎切换到严格模式。

五、语句

1.分号的使用

每一句代码的结尾推荐加上”;”,尽管在 javascript 中代码结束不加分号也不会报错。

加分号”;”的好处有:

  • 避免错误,诸如不完整的输入;
  • 可以通过删除多余的空格来压缩js 代码,代码结尾没有分号会导致压缩错误;
  • 增进代码性能。解析器不必花时间推测应该从哪里插入分号来结束语句。

2.代码块的使用

如:if条件语句中,如果代码块中只有一条语句

if (test) 
alert(test);

上述代码不会导致错误,但不推荐使用。推荐使用的方式如下:

if (test) {
    alert(test);
}

六、编写规范

1.对于条件语句

if (条件) {
    // 条件语句
}

注:if 与 () 和 {} 之间的空格

2.对于循环语句

for (var i = 0; i < 10; i++) {
    // 循环语句
}

注:for的括弧内每个分号后面要空一格

3.对于方法

function test (param1, param2) {
    // 方法体
}

注意:参数中逗号后面有个空格

4.js 代码中尽量使用单引号。


七、变量

1.使用var 定义变量

javascript 里的变量是松散类型的,也就是即可以用 var 定义字符串类型的,也可以用var 定义整数类型的。

2. var message;

像这样只定义没有初始化值的,默认会保存一个特殊的值 —— undefined

3.同一个变量不推荐接收多种数据类型的值

var hhh = 'hello';
hhh = 111;

像这种首先用 hhh 变量接收字符串类型的值,再用 hhh 变量接收整型的值,语法上没有错误,但我们不推荐这样使用。

4.认识局部变量

function test () {
    var message = 'hello';
}
test();
alert(message);

这里的message 是用 var 定义的局部变量,在调用方法test() 时被创建出来,在方法结束的时候也同时销毁了,所以alert(message) 会报错。

5.认识全局变量

function test () {
    message = 'hello';
}
test();
alert(message);
这里的message 没有用var 定义,在调用方法 test() 时被创建出来,没有用var 定义的变量属于全局变量,因此就算方法执行完毕也不会被回收器回收,所有 alert(message) 时就会弹出 ‘hello’。

6.用 var 可以同时定义多个变量,中间用逗号”,”隔开。

如:

var aaa = 'hi',
    bbb = 12,
    ccc = true;

7.严格模式下注意事项

严格模式下变量名不能为 eval 和 arguments ,尽管这两个词既不是关键字也不是保留字,但就是不能使用,否则报语法错误。