发布前JavaScript库格式的推荐做法

Mai*_*tor 4 javascript coding-style

假设您刚刚实现了一个包含一些函数的JavaScript库,例如:

double = function(a){ return a*2; };
root = function(a,b,c){ return -b+Math.sqrt(b*b-4*a*c)/(2*a); };
hypotenuse = function(a,b){ return Math.sqrt(a*a+b*b); };
Run Code Online (Sandbox Code Playgroud)

这样分发它并不是一个好主意,因为该代码会污染全局命名空间.

在发布之前格式化JavaScript库的正确方法是什么?

Den*_*ret 5

由于您的函数不使用类,不需要状态,并且与简单主题相关,您可以简单地将它们发布为

myMath = {
   double: function(a){ return a*2; },
   root: function(a,b,c){ return -b+Math.sqrt(b*b-4*a*c)/(2*a); },
   hypotenuse: function(a,b){ return Math.sqrt(a*a+b*b); }
};
Run Code Online (Sandbox Code Playgroud)

现在假设你想要使用私有函数或状态,那么你可以使用模块模式:

myMath = (function(){
   var square = function(x){return x*x}; // private function
   return {
       double: function(a){ return a*2; },
       root: function(a,b,c){ return -b+Math.sqrt(square(b)-4*a*c)/(2*a); },
       hypotenuse: function(a,b){ return Math.sqrt(square(a)+square(b)); }
   }
})();
Run Code Online (Sandbox Code Playgroud)

但是这里没有理由使用这个结构.

现在请注意,在github上发布远不止于此(文档,测试单元,readme.md等),但很难在SO上进行建设性的讨论.