可以访问在不同局部范围内声明的变量吗?

srb*_*633 0 javascript

我已经学习 javascript 语法大约一个星期了。

如何将变量从一个局部作用域移动到另一个局部作用域?例如,我在屏幕外创建了一个 for 循环,它在循环的每一轮都将一组值添加到一个主数组中,主数组称为 x。我没有包括循环,因为它与问题无关。在下面的示例中,变量 y 屏幕外的目的本质上是获取 x 数组中包含的值,以通过网络抓取来检索更多数据。

撇开上下文不谈,我无法访问 if 语句中声明的 y 变量。正如您在下面看到的,我试图将它用作名为 functionName 的函数中的参数。

if (x.length === 1){
    let y = x[0]
} else { 
    let y = x[0][2]
};

functionName(y)
Run Code Online (Sandbox Code Playgroud)

像这样为 if 语句的每个结果复制函数调用是否更好

if (x.length === 1){
    let y = x[0]
    functionName(y)
} else { 
    let y = x[0][2]
    functionName(y)
};
Run Code Online (Sandbox Code Playgroud)

或者不同的本地范围实际上可以相互通信。

为 if 语句的每个结果调用每个函数肯定感觉不太实际,特别是如果它是一个更大的条件 switch 语句。

提前致谢。

Que*_*tin 5

如何将变量从一个局部作用域移动到另一个局部作用域?

你不能。这就是范围的重点。

像这样为 if 语句的每个结果复制函数调用是否更好

不。将变量放在共享范围内。

{
    let y;
    if (x.length === 1){
        y = x[0]
    } else { 
        y = x[0][2]
    };

    functionName(y)
}
Run Code Online (Sandbox Code Playgroud)