// 1. 优化1: 不仅方便了解释器,也方便了阅读代码的人
var num = 0,
str = "",
obj = null,
other = void 0;
// 2.不要随意地改变变量的类型,初始化是什么类型就是什么类型
var num = 23;
// 错误
num = "-" + 2
// 正确,重新申请一个String变量
var sign = "-" + 2
// 3. 函数返回的类型应该确定,而不是一回这样一回那样,如例是很好的
function getPrice(count){
if(count < 0) return -1;
else return count * 100;
}
// -----------------------------------
// 二:减少作用域的查找。这里指的是全局作用域,一般放在局部作用域里面,减少向上查找的浪费
错误:这里的map全局的
<script>
map = 12;
</script>
我们可以让形成局部
<script>
!function(){
map = 12;
}()
</script>
// 这里的! 是将函数声明语句变成了一个函数表达式,是表达式就会在script标签中自动执行,否则匿名函数直接执行会报错
!function(){alert('iifksp')}() // true
+function(){alert('iifksp')}() // NaN
-function(){alert('iifksp')}() // NaN
~function(){alert('iifksp')}() // -1
// 2. 尽量不用闭包
闭包的作用在于可以让子级作用域使用它父级作用域的变量,将父级的变量保持在内存中! 但是这样一级一级的查找直到全局作用域会很费时间!
PS:所谓闭包就是在函数体类再嵌套一个函数,这个函数使用父级函数的变量,然后返回这个子函数 ,称之为闭包函数,这样可以将父级函数的变量暴露出来
错误使用:
getResult(count){
count++;
process(){
let factor = 2;
return count * factor-5;
}
return process();
}
正确是用法:将count变量直接传递给process函数
getResult(count){
count++;
process(count){
return count * factor-5;
}
return process(count)
}
// ----------------------------------------------------------
尽量使用===符号 而不是 ==
如果你确定了变量的类型,那么就没必要使用==了
如果类型不确定,那么应该手动做一下类型转换
var totalPage = "5";
if(parseInt(totalPage) === 1){
}
使用==在JSLint检查的时候是不通过的
//-----------------------------------------------------------
合并表达式
getPrice(count){
return count < 0 ? return -1 : count * 100;
}
2. 连等(执行顺序是从右到左的)
overtime = favhouse = listingDetail = {...}
//------------------------------------------------------------
ES6的各种简洁的方法
var nums = [4, 8, 1, 9, 0];
nums.sort(function(a, b){
return b - a;
});
var nums = [4, 8, 1, 9, 0];
nums.sort(a, b => b - a);
CLASS
function Person(name, age){
this.name = name;
this.age = age;
}
Person.prototype.addAge = function(){
this.age++;
};
Person.prototype.setName = function(name){
this.name = name;
};
class Person{
constructor(name, age){
this.name = name;
this.age = age;
}
addAge(){
this.age++;
}
setName(name){
this.name = name;
}
}
// 字符串拼接
var url = `/list?page=${page}&type=${type}`;
ES6还有其它一些比较好用的功能,如Object的assign,Promise等,也是可以帮助写出简洁高效的代码
----------------------------------------------------
一:变量
1. 是否:Boolean
is+动词ing/形容词
isLoading
isShow
2. 处于状态 +ed/+able
disabled
editable 是否可以编辑
3. 开关
withTab: '是否带选项卡',
checkJs: '检查Js'
二:函数
1. 事件处理
onXxClick/touch/handleXxChange/onXXX
onSubmit: '提交表单',
handleSizeChange: '处理分页页数改变'
onKeydown: '按下键'
2. 异步处理
getXXX/fetchXXX/update
getUsers: '获取用户列表',
fetchToken: '取得Token',
updateUsrInfo: '更新用户信息',
createAccount: '创建账户'
deleteXx
3. 跳转
toXx 和 goXx
toTplDetail: '跳转到模板详情页面',
backHome: '回到主页'
goHome: '跳转首页',
4. 格式化数据
formatXx/joinXx
formatDate: '格式化日期',
三: 数组
options, list, maps, nodes, entities, collection
userList: '用户列表',
tabOptions: '选项卡选项',
stateMaps: '状态映射表',