将参数传递给Javascript中的内部函数?

时间:2014-09-12 19:14:14

标签: javascript

抱歉问这样一个新手问题,这是我在codeschool上看到的代码:

var hidden = mystery();
var result = hidden(3);

function mystery ( ){
    var secret = 6;
    function mystery2 ( multiplier ) { 
      multiplier *= 3;
      return secret * multiplier;
    }
    return mystery2;
}

我的问题hidden(3)等于致电mystery(3)?如果是,在调用mystery(3)之后,为什么作为函数multiplier的参数的mystery2得到值3?这段代码的结果是54。

3 个答案:

答案 0 :(得分:2)

我认为你对未赋值的* =运算符感到困惑,它的功能相当于:

multiplier = multiplier * 3;

答案 1 :(得分:1)

  

我的问题hidden(3)等于致电mystery(3)

不,不是。 hidden的值是mystery()返回值,即mystery2

// you are calling mystery and assign its return value to hidden
var hidden = mystery();  

如果您想查看hidden的值,只需console.log(hidden);

因此调用hidden(3)与调用mystery2(3)相同。由于mystery2有一个名为multiplier的参数,因此将3传递给mystery2会将该值分配给参数。


我想这里要理解的重要概念如下:

在JavaScript中,函数只是对象,因此可以像其他对象/值一样传递给函数或从函数返回。

答案 2 :(得分:0)

参见速记算子

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators

赋值运算符和速记运算符含义