js中(function(){}()),(function(){})(),$(function(){});之间的区别

参考:https://blog.csdn.net/stpice/article/details/80586444

  1. (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(){},通过形参$接收。

上述函数中,最开始的那个括号,可能会由于js中自动分号插入机制而引发问题。例如:

a = b + c
;(function () {
// code
})();

如果没有第二行的分号,那么该处有可能被解析为c()而开始执行。
所以有的时候,可能会看到这样的写法:;(function foo(){/.../}()),前边的分号可以认为是防御型分号。

  1. $(function(){})

是$(document).ready(function(){/.../})的简写形式,是在DOM加载完成后执行的回调函数,并且只会执行一次。

在一个页面中不同的js中写的$(function(){/.../});函数,会根据js的排列顺序依次执行

你可能感兴趣的:(js中(function(){}()),(function(){})(),$(function(){});之间的区别)