課程
/前端開發
/jQuery
/jQuery源碼解析(架構與依賴模塊)
標準的立即調用的函數寫法是:
(function(){})();
但是我看到還有這種寫法
(function(){}())
這兩種寫法等價嗎
2015-09-25
源自:jQuery源碼解析(架構與依賴模塊) 1-5
正在回答
javascript不存在相等的兩個對象,比如[]===[],{}==={}均為false,而函數的比較最為復雜,樓主寫的兩個自執行函數均無返回值,瀏覽器便取默認值(不是undefined就是null了,實際上undefined==null)去比較,自然相等;
feibenren 提問者
這里的函數執行,比較其實比較的是執行后的結果,自然相等。如果不執行,兩個引用類型的值是不相等(內存地址不相同。)
好像沒回答到正題上(===。。。拜托),函數自執行的方法太多了,但絕對沒有完全等價的;關于函數自執行Xfunction(){}();其中的X你只要取任何使該語句不違法的值都可以達到函數自執行(語言就是這么規定的,別問為什么),比如:1?function(){document.title='hello word'}:null;
實驗了 效果是直等于 返回值true
(function(){ alert("test1"); }());
(function(){ alert("test2"); })();
alert((function(){ alert("test1"); }())===(function(){ alert("test2"); })());
瀏覽器中執行以上代碼結果:test1,test2,test1,test2,true。
個人認為,執行效果等價,但“===”判斷應為錯才對啊?
舉報
由淺入深地剖析jQuery庫的設計與實現,揭開框架背后的秘密
1 回答請問function( selector, context ){}是兩個參數,為啥在使用時傳入一個參數可以解析
1 回答老師,var F = function(){ show("FFF") } F(); (function(){ show('ajQuery3') }();這樣為什么不打印呢?
6 回答;(function(){})() 為什么要加 ; 分號
2 回答(function(){}())把一個函數放到小括號里面是什么意思,最外面的那層不用小括號包裹可不可以?
1 回答下邊代碼看不懂了 jQuery.each(options.match(rnotwhite) || [], function(_, flag) { object[flag] = true; }); return object;
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-11-17
javascript不存在相等的兩個對象,比如[]===[],{}==={}均為false,而函數的比較最為復雜,樓主寫的兩個自執行函數均無返回值,瀏覽器便取默認值(不是undefined就是null了,實際上undefined==null)去比較,自然相等;
2018-07-07
這里的函數執行,比較其實比較的是執行后的結果,自然相等。如果不執行,兩個引用類型的值是不相等(內存地址不相同。)
2015-11-17
好像沒回答到正題上(===。。。拜托),函數自執行的方法太多了,但絕對沒有完全等價的;關于函數自執行Xfunction(){}();其中的X你只要取任何使該語句不違法的值都可以達到函數自執行(語言就是這么規定的,別問為什么),比如:1?function(){document.title='hello word'}:null;
2015-10-16
實驗了 效果是直等于 返回值true
2015-09-28
(function(){ alert("test1"); }());
(function(){ alert("test2"); })();
alert((function(){ alert("test1"); }())===(function(){ alert("test2"); })());
瀏覽器中執行以上代碼結果:test1,test2,test1,test2,true。
個人認為,執行效果等價,但“===”判斷應為錯才對啊?