1.常例
// 太傻了 var getServerStuff = function(callback){ return ajaxCall(function(json){ return callback(json); }); }; // 這纔像樣 var getServerStuff = ajaxCall;
解析:ajax
// 這行 hang return ajaxCall(function(json){ return callback(json); }); // 等價於這行 return ajaxCall(callback); // 那麼,重構下 getServerStuff var getServerStuff = function(callback){ return ajaxCall(callback); }; // ...就等於 var getServerStuff = ajaxCall; // <-- 看,沒有括號哦
2.儘量避免使用 this,結合 bind,apply 等的使用。json
3.純函數,如 slice,相同的輸入返回相同的輸出;固定的變量建議設置在函數做用域內,作到自給自足,或使用凍結函數方法 Object.freeze({ a : 1 })。緩存
tips1:const 與 freeze 不一樣。app
tips2:涉及緩存 memoize 技術函數
tips3:純函數利於測試,給個輸入,斷言輸出便可;純函數利於移植,不關注環境,配置等。測試