正如标题所说,
之间存在差异MyFunction = function() {
}
和
function MyFunction() {
}
没有
重复: var functionName = function() {} vs function functionName() {}
答案 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);
}