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

时间:2011-05-10 17:23:51

标签: javascript

说我有一个功能:

function hi(message) {
    return message;
}

我在该功能中有一个功能:

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

如果它们是相同的,那么这些论点会相互混淆吗?

2 个答案:

答案 0 :(得分:3)

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

不会有任何错误。

答案 1 :(得分:2)

没有

// 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