抱歉问这样一个新手问题,这是我在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。
答案 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)