作用域是指一个变量作用的范围:

    (1)全局作用域
    直接编写在script标签中的JS代码,都在全局作用域。
    全局作用域在页面打开时创建,在页面关闭时销毁。
    在全局作用域中,有一个全局对象window,我们可以直接使用。
    在全局作用域中,创建的对象都会作为window对象的属性保存。
    创建的函数也会作为window对象的方法保存。
    全局作用域中的变量都是全局变量,在页面的任意的部分都可以被访的到。

    (2)函数作用域:
    调用函数时,创建函数的作用域,函数执行完毕之后,函数作用域销毁。
    每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的。
    函数作用域是一个局部的,在函数作用域中可以访问到全局作用域的变量。
    在全局作用域中无法访问到函数作用域的变量。
    当在函数作用域中操作一个变量时,它会在自身作用域中寻找,如果没有,则向上找。
    在函数中想要访问全局变量的话,可以使用window对象。

    注意:定义形参就相当于在函数作用域中声明了变量
    在函数中,不使用var声明的变量,都会成为全局变量

    总结:局部可以访问到全局,但是全局不能访问到局部。

    1. <script>
    2. var a=123;
    3. var n="我会在window对象中作为属性保存";
    4. function fun(){
    5. console.log("我会在window对象中作为属性保存")
    6. }
    7. console.log(window.a);
    8. console.log(window.n);
    9. window.fun();
    10. function fun2(){
    11. b=11;//没有使用var关键字声明,这里的b变成了全局变量
    12. }
    13. fun2();
    14. console.log(b);//b变成了全局变量,可以访问到
    15. </script>