<script> 标签和 .js 文件的【最外层】就是所谓的全局作用域,在此声明的变量在函数内部也可以被访问。

    1. <script>
    2. // 此处是全局
    3. function sayHi() {
    4. // 此处为局部
    5. }
    6. // 此处为全局
    7. </script>

    全局作用域中声明的变量,任何其它作用域都可以被访问,如下代码所示:

    1. <script>
    2. // 全局变量 name
    3. let name = '小明';
    4. // 函数作用域中访问全局
    5. function sayHi() {
    6. // 此处为局部
    7. console.log('你好' + name);
    8. }
    9. // 全局变量 flag 和 x
    10. let flag = true;
    11. let x = 10;
    12. // 块作用域中访问全局
    13. if(flag) {
    14. let y = 5;
    15. console.log(x + y); // x 是全局的
    16. }
    17. </script>

    总结:

    1. window 对象动态添加的属性默认也是全局的,不推荐!
    2. 函数中未使用任何关键字声明的变量为全局变量,不推荐!!!
    3. 尽可能少的声明全局变量,防止全局变量被污染

    JavaScript 中的作用域是程序被执行时的底层机制,了解这一机制有助于规范代码书写习惯,避免因作用域导致的语法错误。