如何在舊環境下使用javascript新特性
javascript是近年來進步非常快的語言
Browser常常趕不上ECMA標準
導致ES6有非常多好用的新功能目前主流Browser都還沒完全支援
即使如此還是建議大家儘量使用ES6的新東西來寫
用以下提到的Polyfilling、Transpiling來做
Polyfilling
舉個ES6新增的Number.isNan來說明:12345if (!Number.isNaN) {  //檢查環境是否支援    Number.isNaN = function isNaN(x) { //不支援就定義一個        return x !== x;    };}
實務上當然不用自己寫
以下是別人寫好現成的
ES5-Shim (https://github.com/es-shims/es5-shim) and ES6-Shim (https://github.com/es-shims/es6-shim)
Transpiling
若有新語法
則上述方法就無法使用了
此時需要使用一些工具將source轉換為舊版相容的code
例如ES6的default parameter values:123456function foo(a = 2) {    console.log( a );}foo();      // 2foo( 42 );  // 42
舊語法:1234function foo() {    var a = arguments[0] !== (void 0) ? arguments[0] : 2;    console.log( a );}
以下是兩種可用的轉換工具
- Babel (https://babeljs.io) (formerly 6to5): Transpiles ES6+ into ES5
 - Traceur (https://github.com/google/traceur-compiler): Transpiles ES6, ES7, and beyond into ES5