博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jquery—Jquery中的(function($){...})(jQuery)
阅读量:7183 次
发布时间:2019-06-29

本文共 1173 字,大约阅读时间需要 3 分钟。

        当你第一眼看到“(function($){...})(jQuery)”的时候。你有什么感觉?呵呵呵,我当时还是止不住的从心底里骂了一句——操,这他妈什么劳什子。时过境迁,对于如今无比倚重Jquery的我,自感当时的自己是那么的无知,今天忙里偷闲。解释一下到底“(function($){...})(jQuery)”该如何理解:

        代码一:

			代码一		

        说明:在浏览器中运行上面代码。会弹出一个对话框。对话框的内容为GaoHuanjie。

        上面代码中运行的JavaScript脚本和“(function($){...})(jQuery)”是一样的。也就是说“(function($){...})(jQuery)”中的函数会自己主动被运行,那么到底该如何理解“(function($){...})(jQuery)”呢?“(function($){...})(jQuery)”实际上表示的是已处于调用状态的匿名函数:function($){...}是定义的匿名函数,參数为$(之所以将參数声明为$是为了不与其它库冲突);为了调用该函数则在该匿名函数的后面添上了括号和实參(这里为jQuery),但又由于操作符的优先级,函数本身也须要用括号,所以又为匿名函数加入了括号。
        释疑解惑:

        一、我运行以下代码为什么报错——jQuery is not defined:

			代码二		
        嗯嗯。浏览器在解析上述js脚本时确实会出现故障,假如为jQuery加入英文双引號,再次使用浏览器运行上述脚本则不会出错。为什么不加就会出错呢,呵呵呵,事实上这里的jQuery还是一个变量。假设为上述代码引入jQuery库,再次使用浏览器运行上述代码则不会出现故障:

			代码三				

        【】

        在引入jQuery库后之所以不会出错是由于jQuery库中定义了jQuery变量。

        二、和$(function(){ })相比,(function($){...})(jQuery)的运行时机也是在网页DOM载入完成后才运行吗?

        不是的,比方例如以下样例:

			代码四		
        上述样例在浏览器中运行的时候会报错。究其原因(function(){...})()函数的运行时机并非在DOM载入完成后才运行,而是随着页面自上而下来运行,假设将其改成例如以下代码则再次使用浏览器运行脚本则不会出现故障:
			代码五		

        一句话:“$(function(){ });”用于存放操作DOM对象的代码,运行当中代码时DOM对象已存在;“(function(){})(jQuery);”用于存放开发插件的代码,运行当中代码时DOM不一定存在。

转载地址:http://qlukm.baihongyu.com/

你可能感兴趣的文章
importlib 模块
查看>>
LeetCode 【235. Lowest Common Ancestor of a Binary Search Tree】
查看>>
Node学习笔记2:建立HTTP服务器和客户端之间的通信
查看>>
循环链表(隔M杀1)
查看>>
【转】C语言中access函数
查看>>
Journal List
查看>>
JavaScript-构造函数模式
查看>>
浅试 Webview 一app 加载 H5小游戏
查看>>
谈谈OpenNI 2初体验
查看>>
stars
查看>>
Boosting决策树:GBDT
查看>>
遇到502错误,invalid request block size 解决方法
查看>>
Js操作Select大全(取值、设置选中等等)
查看>>
windows下架设SVN服务器并设置开机启动
查看>>
JS中typeof的用法
查看>>
投影矩阵
查看>>
微软职位内部推荐-Senior Software Engineer II-Search
查看>>
如何使用JCONSOLE 监控eclipse的tomcat
查看>>
SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程
查看>>
Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
查看>>