JavaScript函数格式

Sha*_*arb 2 javascript function

我已经看到JavaScript文件格式化了两种不同的方式,我不知道它们的区别是什么.

<script>

function foo () { /* a function */ }

</script>

name = { 

foo: function () { /* a function */ }
foo2: function () { /* a different function */ }
}
Run Code Online (Sandbox Code Playgroud)

这两种编写JavaScript的方式之间有什么区别,为什么我会选择另一种方法.

Mic*_*ski 5

第二种方法将函数创建为对象的成员name.这具有将它们封装在内部的效果name,而不是在全局命名空间内创建它们.由于它利用全局命名空间的方式,JavaScript在变量和函数命名方面可能非常有问题.例如,var在函数内部声明变量时忘记使用关键字将导致变量具有全局范围而不是函数范围.

因此,第二种方法允许您在全局级别创建一个变量,并将其用作多个变量和函数的容器,而不必担心与其他全局函数和变量名称冲突.

您将看到的常见模式(并在Douglas Crockford的Javascript:The Good Parts中推荐):

var myApplication = {
  var1: 'some variable';
  var2: 'some other variable';
  var3: 12345

  foo1: function() {
    // do something
  },
  foo2: function() {
    // do something else
  }
};
Run Code Online (Sandbox Code Playgroud)

实际上,我在这里创建的唯一全局变量是myApplication,这不太可能导致名称与全局名称空间中的任何其他内容冲突.我可以调用我的函数:

myApplication.foo1();
myApplication.foo2();
Run Code Online (Sandbox Code Playgroud)