尝试范围之外的JS中具有相同名称的变量

时间:2020-09-16 15:29:45

标签: javascript

我有以下代码:

let tasks;

try {
    await checkMongoConnection();
    const tasks = await Task
        .find()

    await disconnectMongo();

    if (!tasks) { return reject(); }
    // Is is possible to use the same naming?
    tasks = tasks;
} catch(error) {
    console.log(error.message);
}

在JS中可以使用相同的命名吗?例如tasks = tasks并将变量设置在try块之外,还是我必须使用新名称,例如tasks = fetchedTasks

1 个答案:

答案 0 :(得分:2)

否,如果内部范围中有tasks变量,则不能从内部范围访问外部范围中的tasks变量。您可以分配给外部作用域变量,但不能被同名内部作用域变量遮盖。

在该示例中,您不需要外部的tasks,所以我只需要删除它(和tasks = tasks语句)即可。或者,如果由于某种原因需要它,请删除内部的tasks声明(只需从其前面的const删除),以便将try块中的代码分配给外部的{{1 }}。