当我调用函数A时,为什么参数传递给函数A中的函数B?

时间:2017-08-13 10:21:37

标签: javascript

<script>
    window.something = (function(){
        return function(x){
        console.log(x);

        };  


    })();

    something("hello");
</script>

只是想知道,为什么参数&#34;你好&#34;传递给没有参数的something函数里面的函数?另外,为什么不立即执行某些功能呢?它是一个自我调用的函数,但奇怪的是我必须先调用它才能执行它。

3 个答案:

答案 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的参数。