2 个回答

你可以这样理解
两个函数

function f1(f){}
function f2(){}

调用第一个函数,把第二个函数作为参数传递进去

f1(f2)

普通函数的定义与执行

// 定义函数fun,接收两个参数a,b
function fun(a, b){
  console.log(a)
  console.log(b)
}
// 执行函数fun
fun(1,2)
// 输出:
// 1
// 2

此时将函数fun换成一个匿名函数

(function (a, b){
  console.log(a)
  console.log(b)
})(1, 2)

发现没,与你截图的样子差不多了,只不过参数不一样,但实质是一样的:

  • a=你图片中的typeof window !=="undefined"?window:this的值
  • b=你图片中的function(window,noGlobal){ // ... }的值

总结下来就是定义个了一个函数,然后调用了这个函数,并传入了参数。只不过将这几个步骤的代码写在一块了。

可以去网上搜索js自执行函数进行学习,很多文章讲的都很好,里面涉及到闭包、作用域等知识。学习完你就会知道为什么要将一个好端端的函数调用写成这个德行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题