在JavaScript中为匿名函数放置参数
作者:互联网
当我在JavaScript中创建一个匿名函数时,如下所示:
(function(){
/* some code here */
})()
添加此功能的对象将在哪个对象中生效?
您还可以在jQuery源代码中看到一个匿名函数,如下所示:
(function(window, undefined){
/* some code here */
})(window)
该函数的参数如何区分它与匿名的0-arg函数?
解决方法:
JavaScript中的函数是值.也就是说,函数由对象表示,并且与任何其他对象一样,它可以是变量的值或参与表达式.
从而
(function() { ... })
是一个值,就像17或“你好世界”是一个值.
当一个函数(作为一个值)出现在一个表达式中,并且后面跟着(…)括号之间用逗号分隔的表达式列表时,这就是一个函数调用.
好的,所以:
(function() { ... })()
创建一个函数(作为一个值),然后调用没有参数的函数.函数对象,至少作为该代码的直接结果,不存储在任何地方.它在函数调用完成后基本消失,并且该子表达式的整体值将是函数返回的任何值.
将参数传递给这样的函数与将参数传递给任何其他函数没有什么不同.在您引用的具体示例中,目的是防止由错误的“外来”代码引起的某些异常.你的例子真的应该是:
(function(window, undefined) {
// code
})(this);
符号这是一个保留字,其值完全由运行时控制. (好吧,它在本地执行上下文中的值因此受到控制.)在全局范围内进行求值时,上面的代码确保在匿名函数内部,符号“window”将是对全局上下文的引用.这种构造对于可以在除浏览器之外的上下文中使用的代码也是有用的,例如Node.js,其中全局上下文不被称为“窗口”.
标签:anonymous,javascript,function,anonymous-function 来源: https://codeday.me/bug/20190901/1780459.html