闭包通过作用域链来维护同名变量的独立性。当内部函数调用外部函数的变量时,会先在自身的作用域中查找是否有同名变量,如果没有则向上一级作用域继续查找,直到找到为止。由此可见,每个闭包都有自己的私有作用域,不会受到外部同名变量的干扰。
示例代码如下:
function outerFunction() { var name = "outer";
function innerFunction() { var name = "inner"; console.log(name); }
innerFunction(); // 输出"inner" console.log(name); // 输出"outer" }
outerFunction();