外部Javascript函数返回值被忽略,本地代码仍执行问题求助
问题原因与解决方案
嗨,这个问题其实挺常见的——你没有把外部函数的返回值传递给点击事件的处理函数!
咱们拆解下逻辑:
- 当你直接在
click回调里写return false;时,这个返回值是直接告诉浏览器:"终止这个事件的后续行为,包括默认动作和事件冒泡",所以后面的代码自然不会执行。 - 但你调用
my_external_function()的时候,只是执行了这个函数,函数内部的return false只是函数自己的返回值,并没有被外层的click回调接收并返回。浏览器根本没收到"要终止"的信号,所以后续代码肯定会继续跑。
解决方法很简单,两种方式任选:
直接返回外部函数的执行结果
如果外部函数的返回值就是用来决定是否终止后续操作的,直接把它return出去就行:$("#myButton").click(function() { return my_external_function(); // 这里之后的代码都不会执行了,因为return已经终止了回调函数 });先接收返回值,再做判断(适合需要额外逻辑的场景)
如果你还需要在外部函数执行后做一些判断,或者部分代码要根据返回值决定是否执行,可以先把返回值存起来:$("#myButton").click(function() { const stopExecution = my_external_function(); if (stopExecution) { return false; // 终止后续操作 } // 这里放需要继续执行的代码 });
验证一下
按照上面的方式修改后,哪怕你的外部函数只有return false;这一行代码,浏览器也能收到终止信号,后续的本地代码就不会执行了。
内容的提问来源于stack exchange,提问作者ducky
相关产品推荐
相关产品推荐

