判断匿名函数自执行

我现在有一个方法能够判断匿名函数自执行,

(function(fn) {
        
  if('判断条件') {
    var a = 1; // 满足该条件下传的参数不同
    fn(a)
  }else{
    var a = 2;
    fn(a);
  }
})(function(arg) {
            
   // coding...
})

请问还有别的方法来给匿名函数添加判断条件,来决定匿名函数是否执行?

把if写在外面这种超级简单的方式就不要回答了

统一回答一下,我觉得在定义匿名函数的主要目的就是防止变量污染,那很有可能存在一种情况就是某些条件下,我不需要匿名函数执行或者匿名函数执行的内容改变

阅读 3.7k
3 个回答
true?function(){console.log("干啥了")}():function(){console.log("不知道")}();

因为是表达式 不是申明,不用担心申明提升问题。但是真不知道你想干啥

(function(fn) {

if('判断条件') {

var a = 1; // 满足该条件下传的参数不同
fn(a)

}else{

var a = 2;
fn(a);

}
})(function(arg) {

// coding...
})

(function(fn) {

var a    

if('判断条件') {

a = 1; // 满足该条件下传的参数不同

}else{

a = 2;

}
fn(a);
})(function(arg) {

// coding...
})
这两种没啥区别吧

你可以写一个函数,传入条件和对应的参数以实现对流程的控制:

function when (conditions) {
    return func => {
        for (let phase of conditions) {
            let [condition, args] = phase
            if (condition()) {
                func(...args)
                break
            }
        }
    }
}

when([
    [() => 1 + 1 === 3, ['A']],
    [() => 1 + 2 === 3, ['B']]
])(text => alert(text))

https://jsfiddle.net/2s7vec81/

这有几个概念需要先搞清楚

  1. 匿名函数 function() { xxx }

  2. 自执行匿名函数 (function() { xxx })()

  3. 立即执行函数表达式 (func)()

上面第三个里面的func可以是匿名函数也可以是有名字的函数

const a = function() {
    console.log(1);
};

(a)();

or

(function() { console.log(1); })()

楼主你的代码里有两个匿名函数,一个是传入的参数是一个匿名函数

function(arg) {
            
   // coding...
}

另一个是

function(fn) {
        
  if('判断条件') {
    var a = 1; // 满足该条件下传的参数不同
    fn(a)
  }else{
    var a = 2;
    fn(a);
  }
}

楼主你的代码相当于

function fn(arg) {
    // coding...
}

        
if('判断条件') {
    var a = 1; // 满足该条件下传的参数不同
    fn(a)
} else {
    var a = 2;
    fn(a);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题