javascript命名约定:如何遵循命名以便轻松区分不同范围的变量?

时间:2017-09-10 20:15:50

标签: javascript naming-conventions naming ecmascript-5

var mainObject = function(){
   var constNine = 9;
   var a = [1,2,3];
   var key = 'abc';
   function publicFunction(){
     var x = 5;
     return (x*a[0]*a[1]*constNine)+a[2];
   }

   function privateFunction()
   {
     var x = 5;
     return (x+a[0]+a[1])*a[2];
   }

   return {
      key: key,
      publicFunction: publicFunction
   }
}();

在上面的代码中:

  1. mainObject是一个对象,位于窗口范围内,即也可以从外部js访问。
  2. ' constNine'是整数值,在窗口范围内无法访问,只能在mainObject内部使用。它是一个恒定的值9。
  3. '一个'是一个数组,在窗口范围内不可访问,只能在mainObject中使用。
  4. '键'是字符串var并且在窗口范围内。
  5. ' publicFunction'是一个函数,它在窗口范围内。
  6. ' X'是整数变量,只能在publicFunction
  7. 中访问
  8. ' privateFunction'是一个函数,在窗口范围内不可访问,只能在mainObject中使用。
  9. 随着javascript代码的增长,为所有这些JS变量和对象添加命名约定将非常有用。有人可以建议如何命名,即应该在开始时有下划线,应该是骆驼案,应该是全部资本等吗?

    我阅读了几个指南和问题,例如these functions are typewise equivalent,但没有得到涵盖以上所有要点的答案。

1 个答案:

答案 0 :(得分:0)

具体看你的例子:

  • mainObject 应为 const (假设您可以使用ES6,这是一个安全的选择)。
  • 前三个变量也应该被定义为 const ,但是为什么你想要将'9'存储为你使用过的一个我不确定的变量......?同样适用于abc?
  • 当你使用 x 两次时,我会用来定义它,以避免混淆。

由于ES6没有任何理由使用 var - const 可以用于不会改变的变量(实际上不能改变),而仅在其块内(即在函数或逻辑块内,如if语句/ for循环)中给出变量作用域,并允许更改其值。

但是这里还有其他奇怪的事情发生。当你不在mainObject中使用它时,为什么要定义一个不打算在别处调用的'私有函数'?如果这不是一个带参数的函数,为什么不将return对象定义为它自己的const?