亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

(function(){ alert("test"); }()) === (function(){ alert("test"); })(); 這兩個是不是等價的

標準的立即調用的函數寫法是:

(function(){})();

但是我看到還有這種寫法

(function(){}())

這兩種寫法等價嗎

正在回答

5 回答

javascript不存在相等的兩個對象,比如[]===[],{}==={}均為false,而函數的比較最為復雜,樓主寫的兩個自執行函數均無返回值,瀏覽器便取默認值(不是undefined就是null了,實際上undefined==null)去比較,自然相等;

0 回復 有任何疑惑可以回復我~
#1

feibenren 提問者

非常感謝!
2015-11-18 回復 有任何疑惑可以回復我~

這里的函數執行,比較其實比較的是執行后的結果,自然相等。如果不執行,兩個引用類型的值是不相等(內存地址不相同。)

0 回復 有任何疑惑可以回復我~

好像沒回答到正題上(===。。。拜托),函數自執行的方法太多了,但絕對沒有完全等價的;關于函數自執行Xfunction(){}();其中的X你只要取任何使該語句不違法的值都可以達到函數自執行(語言就是這么規定的,別問為什么),比如:1?function(){document.title='hello word'}:null;

0 回復 有任何疑惑可以回復我~

實驗了 效果是直等于 返回值true

0 回復 有任何疑惑可以回復我~

(function(){ alert("test1"); }());

(function(){ alert("test2"); })();

alert((function(){ alert("test1"); }())===(function(){ alert("test2"); })());

瀏覽器中執行以上代碼結果:test1,test2,test1,test2,true。

個人認為,執行效果等價,但“===”判斷應為錯才對啊?

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

(function(){ alert("test"); }()) === (function(){ alert("test"); })(); 這兩個是不是等價的

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號