1.常例
// 太傻了 var getServerStuff = function(callback){ return ajaxCall(function(json){ return callback(json); }); }; // 这才像样 var getServerStuff = ajaxCall;
解析:
// 这行 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 等的使用。
3.纯函数,如 slice,相同的输入返回相同的输出;固定的变量建议设置在函数作用域内,做到自给自足,或使用冻结函数方法 Object.freeze({ a : 1 })。
tips1:const 与 freeze 不同。
tips2:涉及缓存 memoize 技术
tips3:纯函数利于测试,给个输入,断言输出即可;纯函数利于移植,不关注环境,配置等。