JavaScript 允许仅在某些条件为真时才执行各种函数
JavaScript Allow various functions to execute only if some condition is true
我有一个附加到各种元素的事件处理程序列表,但我想在某个条件为真时禁用其中一些。此条件(即布尔值)动态变化,并且在更改时不可预测。这是我目前所做的。
function foo () {
if (someCondition) {
return;
}
// foo does something
}
function bar () {
if (someCondition) {
return;
}
// bar does something
}
...etc
这没关系,但是在每个函数中使用 if 块确实是多余的。有没有更简洁的方法来管理这个问题?我想知道我是否可以将两个事件处理程序附加到一个元素,并且仅在另一个返回 true 时才执行一个。
您可以编写一个函数,将函数转换为仅在条件为真时才运行的函数:
function conditionalize( fn ) {
return function() {
if (someCondition) return;
return fn.apply(this, arguments);
};
}
然后:
var foo = conditionalize(function() {
// stuff that foo does
});
您可以使用
委托方法,如jQuery事件处理方法,请尝试以下操作:
var callbacks = [foo, bar];
function delegate() { // this is the only event handler
var i, len;
for(i=0, len = callbacks.length; i < len; i++) {
if(callbacks[i].apply(this, arguments)){
continue; // return value of this callback is true then continue
} else {
break; // ignore other callbacks
}
}
}
function foo () {
// foo does something
}
function bar () {
// bar does something
}
相关文章:
- 如何做到这一点,使代码在不传递条件后执行函数
- javascript自执行函数-不同的语法
- JavaScript:只有当数组中的所有项都为true时才执行函数
- iFrame url更改时执行函数
- 为什么AngularJS在每个摘要循环上都执行函数
- 如何使用setInterval执行函数
- 当*ngFor以角度2结束时执行函数
- Ajax调用完成后如何执行函数
- 在显示引导弹出窗口之前执行函数
- 从自执行函数返回函数的Javascript性能命中率
- 在操作完成时执行函数
- jquery/js中的自执行函数
- 如何仅在完成对gap.client.youtube的请求.execute后执行函数
- 构造函数函数中的自执行函数的OO上下文/范围
- Javascript未使用=运算符执行函数
- AngularJS:如何按照预定义的顺序执行函数
- 在不使用隔离作用域的情况下执行函数的角度指令
- 如何在页面加载后执行函数是在 AngularJS 中完成的
- 完成页面加载后执行函数
- 如何在完成完全执行函数后触发循环