javascript - jQuery $(function() {}) vs (function () {})($)

标签 javascript jquery

我知道以下是 $( document ).ready() 的简写:

$(function() {
    console.log( "ready!" );
});

我也明白什么是匿名 JS 函数,但是 jQuery 在使用匿名函数调用时有什么特别之处吗?即:

(function() {
    console.log( "ready!" );
})($);

后者只是一个使用 jQuery 的普通匿名 JS 函数吗(即,它不会被视为 $(document).ready() 的简写,因此会立即执行)?

我觉得这一定是以前问过的,但如果有的话我找不到。

最佳答案

正如您所提到的,前者确实是 $(document).ready() 的简写。 至于后者,这只是一个Immediately Invoked Function Expression

(function ($) {
    console.log('ready');
})(jQuery);

这个函数只是一个匿名函数,它接收一个名为$ 的参数。该函数被立即调用,并将一些值(在本例中为 jQuery)作为参数。

IIFE 还可用于隔离作用域避免在包含多个 JavaScript 文件的 Web 应用程序中使用全局变量。在这种情况下,可以使用无参数 IIFE:

(function () {
    // x is only accessible within this IIFE
    var x;
    // do something...
})();

有关立即调用的函数表达式的更多信息,请参阅此问题:What is the purpose of a self executing function in javascript?

关于javascript - jQuery $(function() {}) vs (function () {})($),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41809631/

相关文章:

javascript - 在 mocha.js 中使用 Empty 函数

javascript - express.session.MemoryStore 不返回 session ?

javascript - ReactDOM.createPortal() 在函数中调用时呈现空元素

javascript - 查找事件的父框架

javascript - 我想在按下按钮时显示一个元素。默认显示元素,如何让它默认不显示?

jquery - 如何在 GM 脚本中添加 css 类?

javascript - 使用复选框控制文本框禁用或自述文件行为

javascript - 只是 JQuery 可执行文件的一部分。当直接粘贴在 HTML 中时,一切正常(window.location)

jQuery 检查元素 ID

jquery - 禁用 Flexigrid Jquery 中的拖放选项?