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

标签 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 为何可以将 (a * 2) 作为参数传递//第 2 行//,因为在声明 doSomethingElse 时它只需要一个参数? 这到底是怎么回事?有人能解释一下整个事情的运行顺序吗?

谢谢!

最佳答案

a * 2 只是一个参数。它是 a 的值乘以 2。

这与这样做是一样的:

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

    console.log( b * 3 );
}

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

关于Javascript fn 在调用时有 2 个参数,但在声明时只有 1 个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40406443/

相关文章:

javascript - Backbone.js 使用 native websockets 同步

javascript - JQuery 动画和 slideUp 同时

javascript - 更改marked.js图像/链接表达式

javascript - 如何将单选按钮创建为按钮?

c++ - 封装一个 "include"所以只暴露选定的类

javascript - 跨文件的 Typescript 全局变量

javascript - 在 DOMContentLoaded 上的 javascript 函数中声明全局常量

swift - 如何将闭包提取到类型别名中?

swift - 如何调用 Swift 闭包回调

JavaScript 改变对象内部的变量