JavaScript函数传参时括号导致的立即执行问题

作者:青柠

时间:2026-10-27

浏览:285

本文探讨移动端开发中JavaScript函数传参的一个常见错误。当将回调函数作为参数传递时,若错误地加上括号如exist(),会导致函数在传入前立即执行而非作为引用传递。正确做法是仅传递函数名exist,确保回调在指定事件触发时才执行。

文章目录

JavaScript函数传参中的括号陷阱

在移动端的HTML页面开发中,



我们需要编写一个处理提示框的函数。


具体实现代码如下:

 
function showAlert(msg,fn){
showDialog("alert", msg,"温馨提示",260);
if(isNull(fn) == false){
$("#SD_confirm").unbind("click");
$("#SD_confirm").bind("click",fn);
} 
} 
function exist(){
alert("aaa");
} 

当fn是一个函数,并在调用showAlert时,


我最初编写的调用代码如下:

 
showAlert(json.msg,exist());

结果发现,代码执行到这一行时,甚至还没进入showDialog方法,exist函数就已经弹出"aaa"了。这是怎么回事?后来发现是写法有误。



正确的写法应该是


修改后的代码如下:

 
showAlert(json.msg,exist);

这样修改后,程序会先弹出包含"温馨提示"的对话框,只有点击确定按钮后,才会执行exist函数并弹出"aaa"。



原来是括号使用错误导致的,真是让人汗颜!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章