严格模式

ECMAScript5 严格模式可在整个脚本或独个方法内被激活,它对应不同的 javascript 语境会做更加严格的错误检查,严格模式页确保了 javascript 代码更加的健壮,运行的也更加快速。

严格模式会阻止使用在未来很可能被引入的预留关键字。

你应该在你的脚本中也用严格模式,最好在独立的IIFE 中应用它,避免在你的脚本第一行使用它而导致你的左右脚本都启动了严格模式,这有可能会引发一些第三方类库的问题。

变量声明

总是使用var 来声明变量,如不指定 var ,变量将被隐式的声明为全局变量,例如:

var a=b=0;//b会呗隐式的创建为全局变量,所以,请总是使用 var 来声明变量,并且使用单 var 模式(将所有的变量在函数最前面只使用一个 var 定义)。例如:
(function(){
    'use strict'
    var a=0,
    b=0,
    c=0,
    i,
    j,
    myObject();
}())

采用严格模式带来的好处是,当你手误输入错误的变量时,它可以通过报错信息来帮助你定位错误的出处。

判断真假

js中以下内容为假:
false
null
undefined
0
''
NaN

设置默认参数

辑操作符||和&&也可以被用来返回布尔值,如果操作对象为非布尔值,那每个表达式将会被自左向右的做真假判断,基于此操作,最终用有一个表达式被返回回来,这在变量赋值时,是可以用来简化你的代码的,例如:

如果 x 不存在且 y 不存在,x=1

if(!x){
    if(!y){
        x=1;
    }else{
        x=y;
    }
}
等同于:
x=x||y||1;

这一小技巧经常用来给方法设定默认的参数,

(function (log){
    'use strict';
    function multiply(a,b){
    a=a||1;
    b=b||1;
    log('Result'+a*b);    
    }
    multiply();//Result 1
    multiply(10);//Result 10
    multiply(3,NaN);//Result 3
    multiply(9,5);//Result 45
}(window.console.log));

修改内键对象的原型链

修改内建的诸如 Object.prototype 和Array,prototype 是被严厉禁止的,修改其他的内建对象比如 Function.proptype,虽危害没那么大,但始终还是会导致在开发过程中难以debug的问题,应当也要避免。

三元条件判断(if的快捷语法)

用三元操作符分配或者返回语句,在比较简单的情况下使用,避免在复杂的情况下使用,没人愿意用10行三元操作把自己的脑子绕晕,

if(x===10){
    return 'valid';
}else{
    return 'invalid';
}

return x===10?'valid':'invalid'

JSHint

在js规范中,有很多规范都是样式上的规范而不是在逻辑上的规范,比如尽量的使用===而不是==,我们可以使用JSHint 或者JSLint ,Javascript 代码验证工具,这种工具可以检查你的代码并提供相关的代码改进意见。


九先生
48 声望3 粉丝

打工人,打工魂!