js中作用域
作用域指一个变量的范围,js中一共有两种作用域。
1.全局作用域
- 直接编写在script标签中的JS代码,都在全局作用域。
- 全局作用域在页面打开时创建,在页面关闭时销毁。
- 在全局作用域中,有一个全局对象window,他代表的是一个浏览器窗口,由浏览器创建可以直接使用。
- 在全局作用域中: 创建的变量都会作为window的属性保存
- 创建的函数都会作为window对象的方法保存
- 全局作用域中的变量都是全局变量,在页面的任意部分都可以访问的到。
2.函数作用域
- 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁。
- 每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的。
- 在函数作用域中,可以访问到全局作用域的变量
- 在函数作用域中操作一个变量时,先在自己变量找,找不到再去上一级作用域中找。如果最终没有找到,则会报ReferenceError 。
- 在函数中不适用var声明的变量都会成为全局变量。