javascript的编写风格规范

1、命名

(1)命名应遵循简洁、语义化的原则,定义的时候赋值能更好的了解变量语义。

//bad
let id,inp,obj,shifou;

//good
let userId = 0,
    input = '',
    userInfo = null,
    isAdult = false;

 (2)变量名含多个单词或者太长,可使用小驼峰式命名法并缩写

//bad
let maximumNumber;

//good
let maxNum = 0;

 (3)全局常量使用大写字母和下划线来组合命名,下划线用以分割单词。

const MAX_COUNT = 10;
const URL = 'https://blog.csdn.net/m0_37820751';

2、缩进

行首的空格和 Tab 键,都可以产生代码缩进效果,无论选择哪一种方法都可以,只需统一使用一种。每次写完一段代码,养成格式化代码的习惯。

3、行尾的分号

分号表示一条语句的结束。虽然JavaScript 允许省略行尾的分号。由于解释引擎自动添加分号的行为难以预测,因此编写代码的时候不应该省略行尾的分号。

可以不使用分号的情况
(1)for 和 while 循环

for ( ; ; ) {
} // 没有分号

while (true) {
} // 没有分号

(2)分支语句:if,switch,try

if (true) {
} // 没有分号

switch () {
} // 没有分号

try {
} catch {
} // 没有分号

(3)函数的声明语句

function f() {
} // 没有分号

除了上面的三种情况,所有语句都应该使用分号,如果使用了分号,也不会出错,因为,解释引擎会把这个分号解释为空语句

虽然不使用分号,大多数情况下,JavaScript 会自动添加。

var a = 1
// 等同于
var a = 1;

但如果下一行的开始可以与本行的结尾连在一起解释,JavaScript 就不会自动添加分号。

// 等同于 var a = 3
var
a
=
3

// 等同于 'abc'.length
'abc'
.length

如果习惯了省略分号,可能会出现不容易看出来的BUG,所以建议不要省略这个分号。

// 引擎解释为 c(d+e)
var a = b + c
(d+e).toString();

// 解释为'b'['red', 'green'],
// 即把字符串当作一个数组,按索引取值
var a = 'b'
['red', 'green'].forEach(function (c) {
  console.log(c);
})

其他原因:有些 JavaScript 代码压缩器(uglifier)不会自动添加分号,因此遇到没有分号的结尾,就会让代码保持原状,而不是压缩成一行,使得压缩无法得到最优的结果。

另外,不写结尾的分号,可能会导致脚本合并出错。所以,有的代码库在第一行语句开始前,会加上一个分号。

;var a = 1;
// 避免与其他脚本合并时,排在前面的脚本最后一行语句没有分号,导致运行出错的问题。

4、严格相等运算符取代相等运算符

相等运算符会自动转换变量类型,造成很多意想不到的情况。

0 == ''// true
1 == true // true
2 == true // false
0 == '0' // true
false == 'false' // false
false == '0' // true
' \t\r\n ' == 0 // true

如果需要判断某值为null,就不能使用===,那我们也可以使用逻辑运算符来取代==。

if(!judge){
    console.log('null');
}
//等同于
if(judge == null){
    console.log('null');
}

5、简短的if语句可以改用三元运算符,减少代码行数

if(a === b){
    console.log(1);
} else {
    console.log(2);
}
//等同于
a === b ?  console.log(1) : console.log(2);

6、let/const 取代 var

var 会重复声明变量;let有块级作用域,且没有任何副作用;

var x = 'hello'
if (true) {
  var x = 'world';
}
console.log(x);   // world

var i = 100;
for (var i = 0; i < 10; i++) {
  console.log(i);
}
console.log(i);  // 10
var x = 'hello';
if (true) {
  let x = 'world';
}
console.log(x)  // hello

let i = 100;
for (let i = 0; i < 10; i++) {
  console.log(i);
}
console.log(i)  // 100

7字符串使用单引号或反引号

静态字符串一律使用单引号或反引号,不使用双引号。动态字符串(字符串模板)使用反引号。用单引号的好处:

1.输入单引号不需要按住shitf,方便输入

2.在实际使用中,字符串很多时候会用来拼接html,html内有双引号,字符串用单引号的话就可以省去了转义html的双引号。也可以统一自己的格式。

// good
const a = 'foobar';
const b = `foo${a}bar`;
const html = '<div class="red"></div>'

8、声明定义较多时,使用结构赋值

let a = 1, b = 2, c = 3, d = 4;
//等同于
let [a, b, c, d] = [1, 2, 3, 4];

9、拷贝数组

使用扩展运算符(...)拷贝数组。

let listCopy = [];
// bad
for (let i = 0; i < list.length; i++) {
  listCopy[i] = list[i];
}

// good
let listCopy = [...list];

10、箭头函数的使用。

那些使用匿名函数当作参数的场合,尽量用箭头函数代替。因为这样更简洁,而且绑定了 this。

let dataList = {
    value: 2,
}
let that = this;
$.ajax({
	type:'GET',
	url:'http://www.young1024.com:666/lyric?id=33894312',
	success: function (data) {
    console.log(data);
	console.log(this);   //ajax对象
	console.log(this.dataList); 
	}
})
			
//ajax --箭头函数
$.ajax({
	type:'GET',
	url:'http://www.young1024.com:666/lyric?id=33894312',
	success: (data)=>{
	console.log(data);
	console.log(this);    //window对象
	console.log(this.dataList);
	}
})

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值