在 js 中有两种作用域:全局作用域,局部作用域。
- 全局作用域
- 直接写在 <script> 标签中的变量和方法。
- 在网页打开时创建,在网页关闭时销毁。
- 全局作用域有一个全局对象 window,可以直接使用。。。代表浏览器的窗口,由浏览器创建
- 在全局作用域中创建的变量和函数,都会作为 window 的属性和方法保存。
- 变量的声明提前,函数的声明提前
- 指的是,用 var 和 function 关键字创建的变量和函数,会在所有代码执行之前声明。。。仅仅是声明,不会赋值。
-
函数作用域
- 创建函数时,同时创建函数作用域。执行完毕时销毁函数作用域。
- 每次函数创建的函数作用域,彼此独立。
- 对于某个变量,首先会查找函数作用域,找到就直接使用,没找到就找全局作用域。
- 全局作用域中不可以访问到函数作用域中的变量。
- 在函数中可以操作全局作用域中的变量。。。
- 函数中也存在 var 和 function 定义的变量和函数声明提前,但是同样的也不会赋值。
- 在函数中可以通过 window. 来访问全局变量。