JavaScript函数传参时括号导致的立即执行问题
作者:青柠时间:2026-10-27 21:48:34浏览:286
本文探讨移动端开发中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"。
原来是括号使用错误导致的,真是让人汗颜!
作者最新文章
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
