标准的立即调用的函数写法是:
(function(){})();
但是我看到还有这种写法
(function(){}())
这两种写法等价吗
javascript不存在相等的两个对象,比如[]===[],{}==={}均为false,而函数的比较最为复杂,楼主写的两个自执行函数均无返回值,浏览器便取默认值(不是undefined就是null了,实际上undefined==null)去比较,自然相等;
这里的函数执行,比较其实比较的是执行后的结果,自然相等。如果不执行,两个引用类型的值是不相等(内存地址不相同。)
好像没回答到正题上(===。。。拜托),函数自执行的方法太多了,但绝对没有完全等价的;关于函数自执行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。
个人认为,执行效果等价,但“===”判断应为错才对啊?