日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js中(function(){}()),(function(){})(),$(function(){});之间的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. (function(){}())與(function(){})()


這兩種寫法,都是一種立即執行函數的寫法,即IIFE (Immediately Invoked Function Expression)。這種函數在函數定義的地方就直接執行了。

通常的函數聲明和調用分開的寫法如下:

function foo() {/*...*/} // 這是定義,Declaration;定義只是讓解釋器知道其存在,但是不會運行。foo(); // 這是語句,Statement;解釋器遇到語句是會運行它的。

普通的函數聲明function foo(){}是不會執行的。這里如果直接這樣寫function foo(){}()解釋器會報錯的,因為是錯誤的語法。?
IIFE函數的調用方式通常是將函數表達式、它的調用操作符、分組操作符放到一個括號內,來告訴解釋器這里有一個需要立即執行的函數。否則通常情況下,解析器遇到一個function關鍵字,都會把它當做是一個函數聲明,而不是函數表達式。?
如下幾種寫法都是可以的:
?

(function foo(){/*...*/}());(function foo(){/*...*/})();!function foo() {/*...*/}();+function foo() {/*...*/}();-function foo() {/*...*/}();~function foo() {/*...*/}();

在需要表達式的場景下,就不需要用括號括起來了:

void function(){/*...*/}();var foo = function(){/*...*/}(); true && function () { /*...*/ }();0, function () { /*...*/ }();

void聲明了不需要返回值,第二個則將IIFE函數的返回值賦給了foo。第三、第四個都是明確需要表達式的場景,所以解析器會認識這種寫法。

對于IIFE函數,也可以給它們傳入參數,例如:

(function foo(arg1,arg2,...){...}(param1,param2,...));

對于常見的(function($){...})(jQuery);即是將實參jQuery傳入函數function($){},通過形參$接收。?
上述函數中,最開始的那個括號,可能會由于js中自動分號插入機制而引發問題。例如:

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

如果沒有第二行的分號,那么該處有可能被解析為c()而開始執行。所以有的時候,可能會看到這樣的寫法:;(function foo(){/*...*/}()),前邊的分號可以認為是防御型分號。

2. 第二類是$(function(){});

$(function(){/*...*/});是$(document).ready(function(){/*...*/})的簡寫形式,是在DOM加載完成后執行的回調函數,并且只會執行一次。

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

在一個頁面中不同的js中寫的$(function(){/*...*/});函數,會根據js的排列順序依次執行。?

---------------------?
作者:stpice?
來源:CSDN?
原文:https://blog.csdn.net/stpice/article/details/80586444?

總結

以上是生活随笔為你收集整理的js中(function(){}()),(function(){})(),$(function(){});之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。