2014-09-12 94 views
-2

对不起,问这样一个新手的问​​题,这里是我的codeschool看到代码:将参数传递给Javascript中的内部函数?

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

+1

你的意思是'multiplier * = 3;'?因为有人决定该功能应该这样做。我不认为我理解你的问题。或者你的意思是'var result = hidden(3);'?这是因为'hidden' *是* mystery2',它接受一个参数'multiplier'。你正在传递'3'。 – 2014-09-12 19:16:02

+1

它不会将3分配给'multiplier'。 – 2014-09-12 19:16:58

+0

@FelixKling我认为隐藏是神秘的()而不是神秘2(),这就是我要求的 – 2014-09-12 19:31:06

回答

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中,函数只是对象,因此可以被传递到或从像另一个对象/值的函数返回。

+0

谢谢!这对我来说真的很有意义 – 2014-09-12 19:47:40

2

我认为你是在*糊涂=操作符是不分配它的功能相当于:

multiplier = multiplier * 3;