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 代碼驗證工具,這種工具能夠檢查你的代碼並提供相關的代碼改進意見。