作者:孤火自燃 | 来源:互联网 | 2024-12-10 01:39
在Javascript中,理解变量的作用域对于编写无误的代码至关重要。下面是一个关于变量作用域的示例:
1 2 3 4 5 6 7 8 9
| var z = 10;
function foo(){ console.log(z); }
(function (fn){ var z = 20; fn(); })(foo); |
运行上述代码后,控制台输出了数字10,而非20。这是为什么呢?
在这个例子中,变量z首先被声明为全局变量,其值为10。随后,在一个立即执行的函数表达式(IIFE)内部,再次声明了一个局部变量z,其值为20。当foo函数被调用时,它会尝试访问变量z。由于foo是在全局作用域下定义的,因此它访问的是全局作用域中的z,而不是IIFE内部的局部变量z。
此示例展示了Javascript中的作用域链如何工作,以及如何正确处理不同作用域下的同名变量。了解这些概念有助于避免常见的编程错误,并提高代码的可读性和可维护性。