1

A simple question from someone trying to learn:

I have this:

$(function(){$("#topFlag").hover(changeFlag, setFlag ); });

function changeFlag(){
  //some code
 };

 function setFlag(){
  //somecode
 };

And it's all working (now). But what I expected to use was:

$(function(){$("#topFlag").hover(changeFlag(), setFlag() ); });

What's the difference? Why doesn't changeFlag() (with the parens) work? Isn't this a function call? What if I wanted to pass a parameter to the function?

Thanks for any insights (or pointers to documentation I can read). I've already checked out:

http://api.jquery.com/hover/ http://www.w3schools.com/js/js_functions.asp

4

3 回答 3

8

changeFlag是一个函数。

changeFlag()调用该函数。

你需要传递函数。您无需调用该函数并传递其return值。

于 2013-06-13T21:38:03.673 回答
3

当您在函数名后添加大括号时,它会执行该函数

setFlag() ; // calls the function 

但是当您将鼠标悬停在元素上时,您希望函数触发

而不是在附加事件时

于 2013-06-13T21:38:15.753 回答
0

在 javascript 中,函数也是变量,当您将其作为参数传递时,您希望发送函数以执行,如果您编写此代码,yourFunc()您将发送该函数的结果。
要发送参数,我使用这个:

$(function(){$("#topFlag").hover(function(){changeFlag(param1, param2,...)}, function(){setFlag(param1, param2,...)}); });

这会创建一个匿名函数来调用您的函数。

于 2013-06-13T21:42:19.713 回答