【发布时间】:2020-04-20 17:46:32
【问题描述】:
我正在检查一个缩小的脚本,并在各处看到这种模式function (n) { .. }(jQuery),它像这样在链中使用:function (n) {..}(jQuery), !function (n) {..}(jQuery), !function (n) {..}(jQuery)。
请注意,这不是(function($) {})(jQuery);,我找不到任何问题的答案。
有人有想法吗?谢谢!
【问题讨论】:
-
function (n) { .. }是一个function expression,它允许您将函数映射到变量。function (n) { .. }(x)立即调用该函数。 -
即为第一个。使用最初的
!,它作为 IIFE 完全有效。关键是在function关键字之前有一些标记,使其成为函数表达式,而不是函数声明。 -
@max 是这样,但是 JS 会将任何以单词
function开头的语句解析为函数声明,而不是表达式 - 同一行上结束}之后的任何内容都是无效语法.这就是为什么 IIFE 总是有括号,或者有时是前导!- 它们都是让引擎将其解析为表达式的“技巧”。 -
!function(n){}和(function(n){})具有相同的效果,因此可以认为它们在所有意图和目的上都是等效的。因此,在链接问题(及其重复问题)上给出的答案应该回答您的问题。特别相关:stackoverflow.com/a/23925102/218196
标签: javascript jquery