jQuery中(function(){})()执行顺序的理解

jQuery中 (function(){})() 这种写法是一种立即执行函数表达式(Immediately-Invoked Function Expression,缩写为IIFE),通常用于避免全局变量的污染和函数命名冲突等问题。

该函数表达式在加载 jQuery 库时就会立即执行,而不需要等到 DOM 加载完毕。这个函数可以用来安装 jQuery 插件、定义私有变量、赋值给命名空间等操作。

在解释函数执行顺序之前,先来讲一下IIFE的基本语法:

(function(arg1, arg2,...){
    // 函数体
}(arg1_value, arg2_value,...));

函数体内的代码在定义的时候就被执行了,并且接受外部参数 arg1, arg2, ...。在定义后直接给 IIFE 传入参数 arg1_value, arg2_value, ... 可以直接调用函数体内的代码。这样做的好处也在于保护变量不被污染。

在jQuery中通过IIFE来扩展jQuery库中的函数,例如下面的代码给 jQuery 添加了一个新函数:

(function($){
    $.fn.redColor = function(){
        this.css({'color': 'red'})
    }
})(jQuery);

在这个示例中,函数接收的参数名是$,表示我们可以在代码中使用$作为 jQuery 的别名。通过定义 $.fn.redColor 函数,为所有 jQuery 对象添加了一个名为 redColor 的方法,这个方法可以使调用它的 jQuery 对象的字体变为红色。

至于IIFE函数执行顺序,其实是没有明确的规定的。但是在大部分情况下,jQuery的IIFE函数会在DOM树构建完成后,即document对象完全创建后再执行。

再看一个示例:

<script src="jquery.js"></script>
<script>
(function($){
    console.log("step1");
    $(document).ready(function(){
        console.log("step2");
    });
    console.log("step3");
})(jQuery);
</script>

在这个示例中,IIFE 函数包含了3个console语句,分别输出“step1”,“step3”和“step2”。这表明在执行IIFE时,在它内部包含的文本不会被阻塞,在 console 描述的仅仅是执行顺序而已。

当页面加载jQuery库的时候,它会将 jQuery 和 $ 对象附加在全局对象 window 上。在 IIFE 函数内部,$ 参数可以保证是 jQuery 对象,以此避免了 jQuery 与其他库发生命名冲突。

总之,IIFE 函数是一种非常强大的编程技巧,充分体现了 JavaScript 强大的灵活性。在 jQuery 库的应用中,IIFE 函数常常用于在 jQuery 对象上扩展新的函数和方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery中(function(){})()执行顺序的理解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • ASP.NET 页面中动态增加的控件、添加事件

    ASP.NET 是一个强大的 Web 开发框架,支持动态增加控件和事件。在 ASP.NET 中,可以通过动态增加控件和事件来实现动态生成页面内容、用户交互和数据响应等功能。本文将详细讲解 ASP.NET 页面中动态增加的控件和事件的完整攻略。 1. 动态增加控件 在 ASP.NET 页面中,可以通过代码动态生成和添加控件。动态添加控件的方式有多种,包括直接通…

    jquery 2023年5月27日
    00
  • jQuery UI对话框widget()方法

    以下是关于 jQuery UI 对话框 widget() 方法的详细攻略: jQuery UI 对话框 widget() 方法 widget() 方法是 jQuery UI 对话框的一个方法,用于获取对话框的 jQuery 对象。可以使用该对象来调用对话框的其他方法或属性。 语法 $(selector).dialog("widget");…

    jquery 2023年5月11日
    00
  • 把html页面的部分内容保存成新的html文件的jquery代码

    以下是把 HTML 页面的部分内容保存成新的 HTML 文件的 jQuery 代码的攻略: 1. 获取要保存的 HTML 内容 首先需要获取要保存的 HTML 内容,可以使用 jQuery 的 .html() 方法获取指定元素的 HTML 代码,并将其保存在一个变量中。 以下是一个示例: var content = $(‘#content’).html();…

    jquery 2023年5月27日
    00
  • jQWidgets jqxCheckBox groupName 属性

    jQWidgets 是一个流行的 JavaScript UI 库,提供了许多可定制的 UI 组件。其中一个组件是 jqxCheckBox,它用于创建复选框件。jqxCheckBox 有一个 groupName 属性,用于将多个 jqxCheckBox 组件分组。下是关于 jqxCheckBox 的 groupName 属性的详细攻略: groupName 属…

    jquery 2023年5月11日
    00
  • jQWidgets jqxTabs removeFirst()方法

    jQWidgets是一个基于jQuery和其他JavaScript库开发的专业UI控件库,提供了多种UI控件及丰富的功能。其中jqxTabs是一种选项卡控件,它提供丰富的选项卡功能和效果,并且容易使用。removeFirst()方法是其中的一个常用方法,下面将对该方法作详细讲解: 基本语法 $(‘#jqxTabs’).jqxTabs(‘removeFirst…

    jquery 2023年5月12日
    00
  • jQuery函数map()和each()介绍及异同点分析

    jQuery函数map()和each()介绍及异同点分析 1. each()函数介绍 each()是 jQuery 最基本的迭代函数,它用于遍历 jQuery 对象的所有元素,对每个元素执行回调函数。 each()的语法如下: $(selector).each(function(index,element){ //do something }) select…

    jquery 2023年5月28日
    00
  • jQuery Mobile开发中日期插件Mobiscroll使用说明

    jQuery Mobile开发中日期插件Mobiscroll使用说明 介绍 Mobiscroll是一款常用的jQuery Mobile插件,它提供了丰富的移动端UI组件,其中包括日期时间选择器。本文将详细介绍如何在jQuery Mobile开发中使用Mobiscroll日期时间选择器。 准备工作 在开发Mobiscroll日期时间选择器前,需要先引入相关的库…

    jquery 2023年5月27日
    00
  • jquery实现ajax加载超时提示的方法

    下面是一份详细讲解”jquery实现ajax加载超时提示的方法”的攻略。 1.什么是ajax加载超时 ajax是一种web前端与后端进行交互的技术,它可以让前端通过异步加载的方式向后端发送请求获取数据,而无需刷新整个页面。在ajax请求时,由于网络或后端服务的原因导致前端等待过程超时,这就称为“ajax加载超时”。 2.jquery的ajax请求 jquer…

    jquery 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部