js (function(){}()),(function(){})(),$(function(){});之间的区别
参考:https://blog.csdn.net/stpice/article/details/80586444
- (function(){}()), (function(){})()
均为立即执行函数——IIFE (Immediately Invoked Function Expression)
写法:
(1)(function foo(){/.../}());
(2)(function foo(){/.../})();
(3)!function foo() {/.../}();
(4)+function foo() {/.../}();
(5)-function foo() {/.../}();
(6)~function foo() {/.../}();
IIFE函数可传参,写法:(function foo(arg1,arg2,...){...}(param1,param2,...));
如:(function()...)(juqery);即是将实参juqery传入函数function(){},通过形参$接收。
上述函数中,最开始的那个括号,可能会由于js中自动分号插入机制而引发问题。例如:
a = b + c
;(function () {
// code
})();
如果没有第二行的分号,那么该处有可能被解析为c()而开始执行。
所以有的时候,可能会看到这样的写法:;(function foo(){/.../}()),前边的分号可以认为是防御型分号。
- $(function(){})
是$(document).ready(function(){/.../})的简写形式,是在DOM加载完成后执行的回调函数,并且只会执行一次。
在一个页面中不同的js中写的$(function(){/.../});函数,会根据js的排列顺序依次执行
最新文章
- MySQL数据迁移到MSSQL-以小米数据库为例-测试828W最快可达到2分11秒
- hdu-2063-二分图最大匹配
- MVC OF UEditor 图片上传- 额外参数 笔记
- HTTP中的POST、GET区别
- Java/Android 二进制数据与String互转
- 浅谈RAID写惩罚(Write Penalty)与IOPS计算
- python的一些总结5
- Java程序实现导出Excel,支持IE低版本
- linux下修改.bash_profile立即生效的三种方法
- leetcode day7
- NodeJS Stream 四:Writable
- RELabel : 一个极简的正则表达式匹配和展示框架
- ledisdb:支持类redis接口的嵌入式nosql
- 【RL-TCPnet网络教程】第2章 嵌入式网络协议栈基础知识
- pandas 读取excel文件对数据简单清洗并用matplotlib 将数据展示
- 3.建造者模式(Builder)
- Debian 中文环境设置
- [转帖]2019 简易Web开发指南
- jquery ajax context
- Apt-Cacher-ng 搭建缓存服务器