JavaScript中的!function是什么?

5

我在Google Tag Manager中有这段代码:

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');

fbq('init', '***********');
fbq('set','agent','tmgoogletagmanager', '***********');
fbq('track', "PageView");
</script>

我想知道'!function'是什么,它做什么?我从未见过这个东西,谷歌和百度搜索也没有找到结果。

它可能意味着“不是一个函数”?很奇怪!


感叹号在函数名前面的作用是什么? - user1428716
1个回答

7

这是一种更短的写法,用于编写IIFE(立即调用函数表达式):

!function(){console.log('foo')}()

比1个字符短:

(function(){console.log('foo')})()


是的,我现在可以看到在SO中搜索'!'没有结果!感谢您的帮助。 - Leon Segal
2
对于这样的事情,搜索“感叹号”,举个例子。搜索角色的名字,而不是角色本身。 - Cerbrus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接