如果没有实际传递给函数,如何重新声明函数参数?

Posted

技术标签:

【中文标题】如果没有实际传递给函数,如何重新声明函数参数?【英文标题】:How to redeclare function parameter if it is not actually passed into function? 【发布时间】:2022-01-10 05:12:29 【问题描述】:

如果函数参数实际上没有传递到函数中,那么重新声明函数参数的最佳方法是什么?

function testVariable(foo, bar) 
    bar = bar ? bar : foo; // <--
    return bar;
;

const myFinalValue = testVariable("testValue");

我想这样做以确保在我继续自动化之前bar 具有值(在此示例中为return)。

我必须声明一个新的变量名还是可以覆盖给定的参数?

如果我覆盖该参数,如果没有将该参数的值传递给函数(根据示例),覆盖的变量是否会成为全局变量?

【问题讨论】:

参数工作(在几乎所有正常情况下)就像局部变量一样。不,赋值不会创建隐式全局,因为它已经是函数的局部变量。 【参考方案1】:

只需使用默认值,然后检查变量是否为默认值,如果是,则为所欲为

function testVariable(foo, bar = foo) 
    return bar;
;

const myFinalValue = testVariable("testValue");
console.log(myFinalValue);

【讨论】:

可以将其他参数设置为默认值吗?喜欢function testVariable(foo, bar = foo) 刚刚回答了我的问题。根据 MDN,较早的参数可用于默认设置。 developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 使用undefined 作为默认值是没有意义的。这正是将回退到默认值的值。 @BenRogol 对不起,如果我不清楚,是的,你的想法是正确的。 @Bergi 未定义是为了举例,我编辑了我的答案更清楚

以上是关于如果没有实际传递给函数,如何重新声明函数参数?的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中参数是如何传递的?

C++中函数参数以及Lambda 函数与表达式

函数的格式

Java 函数传参

在 Chrome 中查看传递给 JavaScript 函数的参数

ES6函数增强