书学习JavaScript定义匿名函数如下..。
函数是对象。因此,您可以使用构造函数并将函数分配给变量,从而创建它们--就像
String或Array或其他类型一样。在下面的代码中,使用Function构造函数创建了一个新函数,函数体和参数作为参数传入: var sayHi =新函数(“toWhom”,“告警”(‘Hi’+ toWhom);"); 这种类型的函数通常被称为匿名函数,因为函数本身没有直接声明或命名。
这是JavaScript中“匿名函数”的正确定义吗?如果不是,什么是匿名函数,匿名函数和函数文字之间有什么区别?
发布于 2011-05-02 13:07:05
函数表达式和函数声明
由于您对函数感兴趣,以下是一些需要了解的重要内容。
var abc = function() { ... }被称为函数表达式。变量将在执行时被分配给匿名函数,尽管它的变量声明将被悬挂到当前执行上下文(作用域)的顶部。
但是,函数表达式也可以指定名称,因此可以在其体内调用它,使其具有递归性。请记住这一点,IE有一些问题。当您给它分配一个名称时,它绝对不是一个匿名函数。
像function abc() { ... }这样的函数称为函数声明。它的定义被提升到其范围的顶端。它的名称可以在它和它的父范围内使用。
进一步阅读。
你的例子
它是一个匿名函数,但分配给变量sayHi。
正如Šime Vidas提到的,使用new运算符实例化一个新的Function对象,参数和函数体作为字符串传入。结果对象被赋值给sayHi。
使用此方法创建函数的实际使用很少(尽管它可能只是为了帮助显示函数是对象)。我还相信,将其参数列表和函数体作为字符串传递将调用eval()类型函数,当有更好的构造可用时,这很少是好的。
另外,使用Function 不要形成封闭创建的函数。
如果出于某种原因,我需要创建一个Function,并且它的参数和/或主体只能作为字符串使用,我才会使用这个方法。
在现实世界里,你会.
var sayHi = function(toWhom) {
alert('Hi' + toWhom);
};发布于 2011-05-02 13:07:34
我认为匿名函数的更广泛和更被接受的定义是一个没有名称的函数。
发布于 2011-05-02 13:13:29
匿名函数只是一个没有名称的函数。
function(a, b){
return a + b;
}上面的代码将是无用的,因为它没有您可以调用它的名称。因此,它们通常被分配给一个变量。
var func = function(a, b){
return a + b;
}这很有帮助,因为您可以将一个匿名函数传递给另一个函数或方法,而不必在手动之前创建该函数,如下所示。
function bob(a){
alert(a());
}
bob(function(){
return 10*10;
})https://stackoverflow.com/questions/5857459
复制相似问题