我可以在回调中使用已经使用过的变量名吗?

时间:2013-09-21 09:36:00

标签: javascript callback closures

我有这样的代码(使用node_redis):

client.sismember(someRecord, someArray, function(err, res) {
    if(res) { /* some code */ }
    else {
        client.sismember(otherRecord, otherArray, function(err, res) {
            /* some code */
        }
    }
}

我应该重命名第二个回调函数的参数还是可以正常工作?

3 个答案:

答案 0 :(得分:2)

它会正常工作;内部函数中的变量将遮蔽外部函数中的变量。

您可能还想重命名变量。这样可以更容易地查看在哪里使用的内容,并且如果需要,它允许您使用内部函数中外部函数的变量。

答案 1 :(得分:0)

除非打算让内部函数引用外部函数的变量,否则不需要使用不同的变量名。至于你是否“应该”重命名它们,如果这些函数非常简短,那么哪个是相当清楚哪个是哪个,但如果“某些代码”真的很长,那么如果它们使用不同的名称可能会更清楚。

答案 2 :(得分:0)

是的你可以,那是完全有效的,因为它们的范围,但如果名称不同会更好,以便他们在不久的将来不要混淆你