当函数中定义的函数的参数与封闭函数的参数相同时,它们是否会产生错误

Do the arguments of a function defined within a function create an error when they are the same as the enclosing function's arguments?

本文关键字:函数 参数 是否 错误 定义      更新时间:2023-09-26

假设我有一个函数:

function hi(message) {
    return message;
}

我在该函数中有一个函数:

function hi(message) {
    function say(message) {
        return message;
    }
    say("hello");
}
hi("sup");

如果参数相同,它们会相互混淆吗?

内部函数参数将隐藏外部函数参数。

不会有任何错误。

No.

// let this be message #1
function hi(message) {
    //Inside this scope we have message === #1
    // let this be message #2
    function say(message) {
        // inside this scope we have message === #2
        return message;
    }
    say("hello");
}    
hi("sup");

它将按预期工作。

从可读性/维护的角度来看,我认为重新使用参数/变量名称是不好的。

您还会遇到一个问题,即在内部函数中,#2变量正在隐藏变量#1

这意味着无法访问内部#1 say