🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享博主
🐋 希望大家多多支持一下, 我们一起进步!😄
🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注
1.什么是作用域?
作用域
英文:scope
从字面上理解,作用域
就是作用的区域或者起作用的范围
, 那么在我们的javascript
当中,作用域
就是指一个变量
或者函数
的作用范围!
在javascript
中作用域
规定了 变量
或 函数
有权访问的其他数据!
我们在项目开发当中,会经常遇见跟作用域
有关的操作, 其实作用域的核心思想就是隔离变量,在不同作用域下的同名变量是不会有冲突的
2.作用域的分类
在javascript
中 作用域
分为两种: 如下
全局作用域
局部作用域(也称为:函数作用域)
3.全局作用域
什么是全局作用域?
概念
当我们打开浏览器加载HTML
页面的时候,首先浏览器会提供一个供全局JS代码执行的环境 这个环境俗称: 全局作用域
只要是编写在script
标签中的javascript
代码、例如;变量、函数等..那么这些都在全局作用域
中!
全局作用域
在页面打开的时候就自动创建,也就是说当你使用浏览器打开页面的时候,同时也加载了script
标签之后,全局作用域
便由此产生了, 并且在页面关闭或者说关闭浏览器的时候全局作用域
也自动销毁掉了, 用简单的一句话概括就是: 在打开时创建,在关闭时销毁
什么是全局变量和全局函数?
在全局作用域
下声明的变量
通常叫做全局变量
在全局作用域
下声明的函数
通常叫做全局函数
所以在全局作用域
下声明的变量
或函数
等.. 在页面中的任何地方都可以使用!
代码说明
<script type="text/javascript">
//全局作用域开始------------------------
//定义一个全局函数
function test() {
console.log('hello world');
}
//定义一个全局变量
var num=100;
//全局作用域结束------------------------
</script>
有些人就会问了为什么
全局作用域
中的变量
和函数
可以在任意的地方使用呢?原因是什么?那么说到这里就不得不提一个东西那就是
window对象
windows对象
首先了解一下window对象是什么与如何产生的?
上面说了当你打开一个页面的时候就会产生一个全局作用域
, 打开多少页面全局作用域
就有几个! 而每个全局作用域(这样的执行环境)
都会对应的创建一个与之关联的对象
, 并且在 这个全局环境
中定义的所有变量
和函数
统统保存到这个对象
中,而这个对象就是我们要说的 window对象
!
所以,在全局作用域
中就有一个全局对象window
它代表的就是一个浏览器窗口,window对象
由浏览器创建,打开一个窗口就会自动生成一个window对象
,也就是说可以直接使用!
所以全局执行环境
是最外层的作用域
,全局执行环境
你也可以理解为 就是window对象
全局作用域、window对象之间的关系
全局作用域
是脚本中,最外层
的一个作用域
, 在web浏览器中, 全局作用域会被认为就是window对象
那么因此 所有的全局变量
和全局函数
也都是作为window对象
的属性
和方法
来进行保存的,明白这一点很重要!
代码说明:
//定义一个全局函数
function test() {
console.log('hello world');
}
//定义全局变量
var num=100;
var num2=500;
var num3=3.14;
//变量会作为window对象的属性进行保存
console.log(window.num);
console.log(window.num2);
console.log(window.num3);
//函数会作为window对象的方法进行保存
window.test();
小结
在全局作用域
中我们创建的变量
会作为window对象
的属性
来保存
在全局作用域
中我们创建的函数
会作为window对象
的方法
来保存