局部变量仍可通过函数访问

A local variable is still accessible out the function?

本文关键字:访问 函数 可通过 局部变量      更新时间:2024-05-22
function x() {
    if(true) {
         var y = "hello world";
    }
    alert(y);
}
x()
alert(y)

当我运行此代码时,它会发出两次警报"你好世界"。

我阅读了有关范围的教程,通过它们y第二个警报应该无法访问。

为什么它是可访问的?提前感谢!!

不,它不会发出两次警报。(我实际上在IE,Firefox和Chrome中对此进行了测试,以绝对确定。

该变量是函数的本地变量,因此尝试在函数外部使用它会导致引用错误。


如果您确实看到了该行为,那是因为您已经在全局范围内定义了具有相同值的相同名称的变量。

变量 y 不应在函数外部访问。当我测试它时,它无法访问。

实际上,您可能还在全局范围内的某个地方定义了变量 y,这可能是被警告的内容。

JavaScript 中的局部变量只能对局部范围访问,而全局变量(在函数外部定义的变量(可以在任何地方访问,甚至在函数内部也是如此。

在您的情况下,我怀疑全局范围内的某处可能定义了另一个"y"变量。


另外,您确定没有运行两次脚本吗?在这种情况下,您可能会从对 x(( 函数的两次调用中收到两次警报。

另一个

原因是,您可能正在页面上运行另一个脚本,该脚本在其全局范围内定义了 y 变量,当它与此脚本结合使用时,它会提醒在另一个脚本的全局范围内定义的 y 变量。