(function(window){}) 和 (function(){}) 之间的区别
Difference between (function(window){}) and (function(){})
以下两个代码片段有什么区别?我已经看到两者都用于模块模式,闭包和更高级别的功能声明。两者的正确用途是什么?
(function(){
})();
(function(window){
})(window);
在这种情况下,语义差异很小。但是,如果在整个代码中大量使用window
,则将其别名为局部变量可以更好地缩小。
(function (window) { window['foo'] = window['baz']; })(window);
可以缩小为
(function(w){w['foo']=w['baz']})(window)
如果没有本地别名,window
就无法减少,而是
(function(){window['foo']=window['baz']})()
类似技巧还有其他原因以及其他用例。看看这个问题,找到更深入的解释。
(function(window){
})(window);
现在,当您在此处传递窗口
(window);
时,这是窗口对象,全局对象。这是为该函数创建的窗口的本地副本。
(function(window){
})
当你这样做时,
(function(window){
console.log(window.x)
})
的是本地副本而不是全局副本,但它们仍然只保留对全局窗口对象的引用,因此最终您仍在访问默认窗口对象。
因此,行为没有变化,但窗口对象是本地复制的。
相关文章:
- (typeof variable === “function”) 和 jQuery.isFunction() 有什么区别
- 对于IIFE void function()与(function()),使用void与在parens中换行之间的区别
- 绑定返回的结果和使用function()的结果之间有什么区别
- 什么's AngularJS中$scope.myScope=function()和function()之间的区别
- (function(){/*...*/})()有什么区别;和 (function($){/*...*/})(jQuery
- .click(function () { 和 javascript:myfunction() 有什么区别?
- 函数(){}.bind(this) 和 angular.bind(this, function() {}) 之间的区别
- JavaScript 中 Function.prototype 和 Object.prototype 之间的区别
- (function(window){}) 和 (function(){}) 之间的区别
- this.function 和 this.function() 之间的区别
- JavaScript 中的 void、eval 和 Function 构造函数有什么区别?
- alert(“Hi!”) 和 function(){alert(“Hi!”)} 之间的区别
- JavaScript Function()和JavaScript对象之间的区别
- var foo=function(){..}()和var foo=(function(){..}())之间的区别
- javascript中函数myName()和var myName=function()之间的区别
- on(“click”,function())和onclick=“”之间有什么区别;函数()&”;
- Function和Function.prototype之间的区别
- 构造函数的区别:var X = function (){}, var X = function X(){}和functi
- 带有多事件的$(function)与带有单事件的multi $(function)的区别
- $(callback)和$(document)之间的区别.ready(function)