JS变量作用域

代码示例:

if (true) {
    var num = 1
}

console.log(num)    // 输出 1
for (var i = 0; i < 2; i++) {
    // TODO
}

console.log(i)        // 输出 2
function getNum() {
    var local = 1;
    console.log("getNum");
}

getNum();                // 输出 "getNum"
console.log(typeof local);    // 输出 undefined

定义在 if 或者 for 这样的代码块中的变量,它在代码块之外是可见的,但是如果变量是在某个函数中定义的,那么它在函数以外的地方是不可见的。这是因为在 Js 中变量的定义并不是以代码块作为作用域的,而是以函数作为作用域的,也就是说函数外部无法访问函数内部定义的变量。另外需要注意的是,在全局环境为 window对象时(即web浏览器中),我们声明一个变量时如果没有使用 var 语句,该变量就会被默认为全局变量。

参考书籍:《JavaScript面向对象编程指南》

艺无止境,诚惶诚恐, 感谢开源贡献者的努力!!
原文地址:https://www.cnblogs.com/d0usr/p/11211028.html