JavaScript函数格式

时间:2011-08-29 20:13:31

标签: javascript function

我看过JavaScript文件的格式有两种不同的方式,我不知道它们有什么不同。

<script>

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

</script>

name = { 

foo: function () { /* a function */ }
foo2: function () { /* a different function */ }
}

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

2 个答案:

答案 0 :(得分: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
  }
};

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

myApplication.foo1();
myApplication.foo2();

答案 1 :(得分:0)

第二种形式称为命名空间。

它允许您在其中定义函数和varibales。

将其视为java中的类,

您可以声明只能通过命名空间访问的方法和属性。

在您的示例中,它允许您定义2个名为foo的函数。

一个是全球性的(第一个) 一个在名为name(第二个)的对象内部

如果要在某处调用第二个,则必须提供命名空间 例如:

name.foo()