繁体   English   中英

是否可以在不使用 JavaScript 中的所有代码的情况下调用 function?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM