假设我有一个JS函数,它返回一个值,但其中包含一个alert
命令。我想稍后在代码中将返回值赋给一个变量。有没有一种方法可以调用函数而忽略alert
命令,以便稍后将返回值分配给变量?例如:假设我有function f1(num) { alert ("hi); return num * 2; }
然后是function f2() { var x = f1(2); return x;}
。如何在以后的函数中忽略alert
,只将返回值保存在变量中?
发布于 2021-04-09 04:44:49
向f1()
添加一个附加参数以跳过alert
function f1(num, skipAlert) {
if (skipAlert !== true) alert("hi");
return num * 2;
}
function f2() {
var x = f1(2);
return x;
}
function f2_skipAlert() {
var x = f1(2, true);
return x
}
document.querySelector('button#alert').addEventListener('click', function () {
console.log(f2());
});
document.querySelector('button#skip-alert').addEventListener('click', function () {
console.log(f2_skipAlert());
});
<button id="alert">Run with alert</button>
<button id="skip-alert">Run without alert</button>
发布于 2021-04-09 04:38:15
无法更改f1
函数时的解决方案
您可以使用以下命令禁用它。请记住在执行包含alert
函数的禁用函数之前定义禁用函数。
window.alert = function() {};
如果您需要重新启用它,您可以将其临时关联到另一个变量:
var oldalert = window.alert;
然后像我之前那样禁用它,然后使用window.alert = oldalert;
重新启用它
正如esqew所说,覆盖它不是一种好的做法
使用的示例
function disableAlert(){
window.oldalert = window.alert;
window.alert = function() {};
}
function enableAlert(){
window.alert = window.oldalert;
}
然后,在你的f2
函数中,你可以这样做:
function f2() {
disableAlert();
var x = f1(2);
enableAlert();
return x;
}
如果您可以更改f1
函数,则解决方案
类似于esqew解决方案,但使用默认参数
function f1(num, skipAlert = false) {
if (skipAlert) alert("hi");
return num * 2;
}
function f2(skipAlert = false) {
var x = f1(2, skipAlert);
return x
}
如果你想用alert
调用,你可以使用f2(true)
,否则就用f2()
。
https://stackoverflow.com/questions/67011475
复制相似问题