![](/img/trans.png)
[英]Is it possible for a JavaScript function to return its own function call as a string?
[英]Is it possible to call a function while not using all of its code in JavaScript?
假设我有一个 JS function,它返回一个值,但里面有一个alert
命令。 我想稍后在代码中将返回的值分配给一个变量。 有没有办法调用 function 但忽略alert
命令,以便稍后将返回值分配给变量? 例如:假设我有function f1(num) { alert ("hi); return num * 2; }
然后function f2() { var x = f1(2); return x;}
function f2() { var x = f1(2); return x;}
。 如何忽略alert
并仅将返回的值保存在以后函数的变量中?
向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>
f1
function 的解决方案您可以使用以下方法禁用它。 请记住在执行包含alert
function 的命令之前定义禁用 function。
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 中,您可以这样做:
function f2() {
disableAlert();
var x = f1(2);
enableAlert();
return x;
}
f1
function类似于 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()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.