gpt4 book ai didi

javascript - 有没有办法检查函数第二次调用时某些条件是否成立?

转载 作者:行者123 更新时间:2023-12-02 17:45:14 26 4
gpt4 key购买 nike

所以我想调用一个函数

myfunction();

我希望能够让我的代码调用它一次就可以了,但是如果我的代码第二次调用它,我想检查某些条件是否为真,如果是,我希望该函数不运行。如果这些条件不成立,那么我希望该函数照常运行。我只想知道特定的情况是否仅在第二次调用该函数时为真,并且不允许我的函数再次运行,直到这些条件不再为真。

if(condition) {
//don't run function code for as long as this is true.
}
else{
//business as usual, run the code
}

我想总是在第二次调用该函数时执行此操作。所以第一次函数调用,没有检查。第二次通话时,请检查。第三次调用时不检查,第四次调用时检查等。基本上,每次调用该函数时,都会检查某些条件是否为真如果是,则不要运行函数代码。我非常感谢您的回复。

最佳答案

这很容易。由于您正在寻找的基本上是一个根据某些内部状态修改其行为的函数,因此它是对象的理想应用程序:

var o = {
calls: 0,
fn: function(){
if(++this.calls%2){
console.log('odd call');
} else {
console.log('even call');
}
}
}

如果你绝对必须只有一个函数(没有对象),你可以使用 immediately-invoked function expression (IIFE)返回一个函数:

var fn = (function(){
var calls = 0;
return function(){
if(++calls%2){
console.log('odd call');
} else {
console.log('even call');
}
}
})();

这样做的优点是封装了 calls 变量:如果没有函数外部就无法访问或篡改该变量。

需要注意的是,这所实现的效果称为“副作用”:也就是说,如果不了解函数的细节,就无法再预测函数的行为。我不会教条地说副作用总是不好的,但你必须小心对待它们:确保它们有意义,并且你的文档清楚地说明正在发生的事情。

关于javascript - 有没有办法检查函数第二次调用时某些条件是否成立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21823884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com