这两种函数语法类型有什么区别

时间:2008-12-17 16:33:14

标签: javascript

正如标题所说,

之间存在差异
MyFunction = function() {

}

function MyFunction() {

}

没有

重复: var functionName = function() {} vs function functionName() {}

5 个答案:

答案 0 :(得分:1)

第一种形式实际上是一个赋予它的匿名函数的变量,第二种是声明的函数

它们几乎可以互换,但有一些区别:调试器使用anons会更难(因为它们没有名称),JS引擎可以直接访问脚本中存在的声明函数,但是在分配之后才能访问它们。

答案 1 :(得分:0)

我认为你的意思是

var MyFunction = function() {
}

在许多情况下,差别不大。

当你在某种包装类中并且想要确定你的命名空间时(例如在greasemonkey中),var语法有时很有用。

另外,我相信函数构造函数(使用.prototype等)不能与var语法一起使用。

答案 2 :(得分:0)

这是一个区别:

function Moose() {
   alert(arguments.callee.name); // "Moose"
}
var Cow = function() {
   alert(arguments.callee.name); // ""
}

答案 3 :(得分:0)

function myFunction(){} var myFunction = function myFunction(){} 相同。如果你只是做 MyFunction = function(){} ,就像 MyFunction = function anonymous(){}

变量和函数具有不同的范围,但该函数只能通过变量名称在函数外部引用,该变量名称需要绑定到函数。

function myFunction(){} myFunction变量绑定到恰好具有相同名称的函数。

答案 4 :(得分:-1)

当你声明一个窗口load事件处理程序时,Firefox上有一个细微的区别。在脚本标记中声明以下内容仅适用于Firefox:

function onload() {
    alert(42);
}

你必须为IE,Opera,Safari或Chrome这样做:

onload = function () {
    alert(42);
}