繁体   English   中英

为什么这个javascript函数在没有被调用的情况下运行?

[英]Why is this javascript function running without being called?

$(document).ready(SetupButtonClicks());

function SetupButtonClicks() {
    $('#btnJavaPHP').click(DoPHPStuff());
}

function DoPHPStuff() {
    //stuff
}

我在我的javascript文件中有这个代码,当我调试它时,我看到它调用SetupButtonClicks()就像它应该但是在完成后它调用DoPHPStuff() 只有在单击btnJavaPHP时才应调用DoPHPStuff() 我究竟做错了什么?

更改SetupButtonClicks函数:

$('#btnJavaPHP').click(DoHPStuff);

你有事情是这样编码的,你告诉JavaScript来调用的函数,而不是它作为“点击”处理程序。 括号是一个导致函数被调用的运算符

删除()

通过编写$(document).ready(SetupButtonClicks()) ,您将调用 SetupButtonClicks并将其返回值传递给ready
类似地,通过编写$('#btnJavaPHP').click(DoPHPStuff()) ,您正在调用 DoPHPStuff (立即)并将其返回的内容传递给click()

您需要通过编写$(document).ready(SetupButtonClicks)$('#btnJavaPHP').click(DoPHPStuff)来传递函数$('#btnJavaPHP').click(DoPHPStuff)

function DoPHPStuff() {
    //stuff
}

function SetupButtonClicks() {
    $('#btnJavaPHP').click(DoPHPStuff);
}

$(document).ready(SetupButtonClicks);    

除了函数声明之外,函数标识符后面的一对括号会导致函数执行。 例子:

// function declaration; function not executed
function SetupButtonClicks() {

}

// function executed
SetupButtonClicks();

// function not executed
SetupButtonClicks;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM