Javascript fn在调用时有2个参数,但在声明时只有1个参数?

时间:2016-11-03 16:15:34

标签: javascript scope closures

我不明白为什么会这样:

function doSomething(a) {
    b = a + doSomethingElse( a * 2 );

    console.log( b * 3 );
}

function doSomethingElse(a) {
    return a - 1;
}

var b;

doSomething( 2 ); // 15

doSomething fn中的doSomethingElse如何作为参数//第2行传递(a * 2)//因为当声明doSomethingElse时它只需要一个参数? 到底发生了什么事?有人可以解释整个事情的运行顺序吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

a * 2只是一个论点。无论a的值是多少,乘以2。

这与此相同:

function doSomething(a) {
    var c = a * 2;
    b = a + doSomethingElse( c );

    console.log( b * 3 );
}

参数以逗号分隔(在ES5中)。但是,您可以将表达式作为单个参数传递,因为它们会产生一个值。