javascript作用域 (Scope) 什么是作用域?


作者:极客小俊 一个把逻辑思维转变为代码的技术博主
我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人!
搜索公众号: [极客小俊] 原创文章

1.什么是作用域?

作用域 英文:scope 从字面上理解,作用域就是作用的区域或者起作用的范围, 那么在我们的javascript当中,作用域就是指一个变量或者函数的作用范围!

javascript作用域 规定了 变量函数 有权访问的其他数据!

我们在项目开发当中,会经常遇见跟作用域 有关的操作, 其实作用域的核心思想就是隔离变量,在不同作用域下的同名变量是不会有冲突的

2.作用域的分类

javascript作用域分为两种: 如下

  1. 全局作用域

  2. 局部作用域(也称为:函数作用域)

3.全局作用域
什么是全局作用域?

概念 当我们打开浏览器加载HTML页面的时候,首先浏览器会提供一个供全局JS代码执行的环境 这个环境俗称: 全局作用域

只要是编写在script标签中的javascript代码、例如;变量、函数等..那么这些都在全局作用域中!

全局作用域 在页面打开的时候就自动创建,也就是说当你使用浏览器打开页面的时候,同时也加载了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对象方法来保存

"点赞" "评论" "收藏"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,欢迎在下面 ?? 留个言指出、或者你有更好的想法,欢迎一起交流学习
关注 极客小俊 微信公众号 不定期更新免费技术干货