ECMAScript5 严格模式可在整个脚本或独个方法内被激活,它对应不一样的 javascript 语境会作更加严格的错误检查,严格模式页确保了 javascript 代码更加的健壮,运行的也更加快速。javascript
严格模式会阻止使用在将来极可能被引入的预留关键字。java
你应该在你的脚本中也用严格模式,最好在独立的IIFE 中应用它,避免在你的脚本第一行使用它而致使你的左右脚本都启动了严格模式,这有可能会引起一些第三方类库的问题。函数
老是使用var 来声明变量,如不指定 var ,变量将被隐式的声明为全局变量,例如:工具
var a=b=0;//b会呗隐式的建立为全局变量,因此,请老是使用 var 来声明变量,而且使用单 var 模式(将全部的变量在函数最前面只使用一个 var 定义)。例如: (function(){ 'use strict' var a=0, b=0, c=0, i, j, myObject(); }())
采用严格模式带来的好处是,当你手误输入错误的变量时,它能够经过报错信息来帮助你定位错误的出处。prototype
js中如下内容为假:
false
null
undefined
0
''
NaNdebug
辑操做符||和&&也能够被用来返回布尔值,若是操做对象为非布尔值,那每一个表达式将会被自左向右的作真假判断,基于此操做,最终用有一个表达式被返回回来,这在变量赋值时,是能够用来简化你的代码的,例如:code
若是 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的问题,应当也要避免。ip
用三元操做符分配或者返回语句,在比较简单的状况下使用,避免在复杂的状况下使用,没人愿意用10行三元操做把本身的脑子绕晕,原型链
if(x===10){ return 'valid'; }else{ return 'invalid'; } return x===10?'valid':'invalid'
在js规范中,有不少规范都是样式上的规范而不是在逻辑上的规范,好比尽可能的使用===而不是==,咱们可使用JSHint 或者JSLint ,Javascript 代码验证工具,这种工具能够检查你的代码并提供相关的代码改进意见。