你怎么知道你必须使用function(){}?

时间:2009-07-11 11:08:52

标签: jquery lambda anonymous-function

代码1

$(document).ready(function() {
    $('.poem-stanza').addClass('highlight');
});

代码2

$(document).ready(
    $('.poem-stanza').addClass('highlight');
);

5 个答案:

答案 0 :(得分:3)

您阅读了所调用方法的文档(本例中为ready方法)并查看它所期望的值。

如果它需要一个功能,请使用你的第一个例子。

如果需要jQuery *对象,请使用第二个示例(因为addClass方法的返回值是jQuery对象)。

*我假设您正在使用jQuery,因为我认为它是唯一具有这样命名的函数的库。我可能错了,$ is a stupid name for a function

答案 1 :(得分:0)

如果函数接受函数作为参数,则代码2将不起作用,因为

$('.poem-stanza').addClass('highlight');

不是函数定义(它是一个声明)

要创建表示函数的对象,应使用以下语法之一:

function myFunc() {
}

var myFunc = function() {
}

var myFunc = new Function("...javascript code...");

在上面的一个定义之后, myFunc 将保存一个表示函数的对象。

答案 2 :(得分:0)

嘿,就是这样:D

不,说真的,当你必须做好准备好的事情时();或类似的方法,你使用。功能。其他方法接受参数。文档将为您提供详细信息。

答案 3 :(得分:0)

就像其他人说的那样,你必须查阅文档才能看到函数接受的参数类型。但是,这里的重要部分是:如果你有一个语句,它会在解释器碰到它时执行。如果定义一个函数并将其传递给就绪函数,则就绪函数决定何时执行它。在这种特殊情况下,文档准备就绪时。另一个例子是setTimeout,它需要一个函数和一些毫秒作为参数。

规则如下:当你想将一些代码传递给其他函数时,你必须将它包装在一个函数中。如果使用(unwrapped)语句,它将被执行并将结果传递给函数。

答案 4 :(得分:0)

如果需要回调函数,可以使用function关键字。当您使用readyclick等方法时,您不希望在设置事件时运行代码,但是当事件发生时,您需要一个回调函数。

使用匿名函数就像使用之前定义的命名函数一样。在这样的例子中,更容易理解正在发生的事情:

function onReady() {
    $('.poem-stanza').addClass('highlight');
}

$(document).ready(onReady);