<script>
window.something = (function(){
return function(x){
console.log(x);
};
})();
something("hello");
</script>
只是想知道,为什么参数&#34;你好&#34;传递给没有参数的something函数里面的函数?另外,为什么不立即执行某些功能呢?它是一个自我调用的函数,但奇怪的是我必须先调用它才能执行它。
答案 0 :(得分:2)
您正在直接调用该函数,也称为module pattern。
所以有了这段代码
something = (function(){
return function(myparam) {
// ...
};
})();
它相当于这段代码:
something = function(myparam) {
// ...
};
答案 1 :(得分:1)
something
是返回内部函数的immediately-invoked function expression的结果。然后用“hello”调用该内部函数。
答案 2 :(得分:1)
这就是封闭的工作原理。你可以使用一个函数,然后再次使用参数调用函数返回函数。看一下这个例子: -
function multiply(num1) {
return function(num2) {
return num1 * num2;
};
}
var multi = multiply(2);
console.log(multi(5));
现在,正如您所看到的,我们将第一个函数调用存储在一个名为multi的变量中(您可以说这是函数的第一个返回语句中的函数乘以第2行)并且使用multi作为函数我们是传递给num2的参数。