1、基本格式化
- 缩进层级:4个空格(把tab设成4个空格)
- 语句结尾:保留;(虽然分析器有自动分号插入机制)
- 行的长度:80个字符
- 空行:确保语义有关联的代码展现在一起
- 命名:变量和函数遵循小驼峰命名法,小写字母开始,后面每个单词首字母大写
变量命名前缀名词myName
函数命名前缀动词setName()
常量MAX_COUNT大写字母和下划线
构造函数大驼峰命名法AnotherName
- 直接量:
字符串:推荐” “,虽然和’ ‘一样
整数和浮点数:8进制废弃
null:空对象指针
初始化一个变量,这个变量可能赋值为一个对象
和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象
函数的参数期望是对象时,用作参数传入
函数返回值期望是对象时,用作返回值传出
不要用null检测是否传入某个参数
不要用null检测未初始化的变量
undefined:var声明但未初始化,尽量不使用undefined,使用
var person=null;
对象:建议使用对象直接量,在直接量中直接写出所有属性;而非显式创建实例然后添加属性的做法。
var book={
title:"js book",
author:"wang"
};
数组直接量:
var numbers={1,2,3,4};
2、注释
- 单行注释:
//好的写法
if (condition) {
//注释
allowed();
}
注释前有空行。
代码尾部注释,代码结束到注释间至少有一个缩进。
- 多行注释:推荐java风格
if (condition){
/*
* 注释
* 注释
*/
allowed();
注释之上有空行
*号之后有空格
难于理解的代码,可能被误认为错误的代码,hack推荐添加注释
方法,构造函数,包含文档化方法的对象推荐加文档注释
3、语句和表达式
- 块语句推荐使用{}包裹
if for while do…while try…catch…finally
- {}推荐使用java风格
if (condition) {
doSomething();
} else {
doSomethingElse();
}
- switch语句
switch(condition) {
case "first":
//代码
break;
case "second":
case "third":
//代码
break;
case "fourth":
//代码
break;
//没有default
每条case语句相对于switch缩进一个层级
第二条case语句开始,每条case语句前后各有一个空行
case语句连续执行紧邻
defau语句不用时注释
- with语句:避免使用
- for循环:中断,continue ,break,经常遍历数组成员
- for-in循环:遍历对象属性,返回属性名,不能遍历数组成员
4、变量函数和运算符
js编程的本质是编写一个个函数来完成任务,好像js即可以面向对象,又可以面向过程,还可以函数式编程。
- 变量声明:变量的声明提前,函数内部任意地方定义变量和在函数顶部定义变量是完全一样的,但推荐都放在顶部
- 函数声明:同样函数声明也会提前
推荐函数声明在使用前
函数声明不推荐在语句块内
内部局部函数声明建议紧跟变量声明之后
- 匿名函数,推荐函数声明被()包裹
var value = (function() {
//
return {
message: "hi"
}
}());
- 推荐局部使用严格模式
- 强制类型转换:== !=会强制类型转换,推荐=== !==
- eval() 将传入的字符串当代码来执行,禁止在封闭的作用域中使用它创建新变量和函数
- 原始包类型:String,Boolean,Number,每种类型代替全局作用域中的一个构造函数,并对应原始值的对象,原始包类型主要是让原始值具有对象般的行为。String是字符串,是原始类型,可以使用方法,原因是方法调用时建立新的实例,但使用后新实例销毁了。
- 不推荐手动创建这些对象
var name=new String("wang"); //不推荐
时间: 2024-10-27 18:51:29