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

简介: javascript作用域 (Scope)

🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享博主
🐋 希望大家多多支持一下, 我们一起进步!😄
🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注

1.png

1.什么是作用域?

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

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

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

2.作用域的分类

javascript作用域分为两种: 如下

  1. 全局作用域

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

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对象方法来保存

相关文章
|
2月前
|
JavaScript 前端开发 开发者
JavaScript的变量提升是一种编译阶段的行为,它将`var`声明的变量和函数声明移至作用域顶部。
【6月更文挑战第27天】JavaScript的变量提升是一种编译阶段的行为,它将`var`声明的变量和函数声明移至作用域顶部。变量默认值为`undefined`,函数则整体提升。`let`和`const`不在提升范围内,存在暂时性死区。现代实践推荐明确声明位置以减少误解。
29 2
|
5天前
|
JavaScript 前端开发
JavaScript基础&实战(4)js中的对象、函数、全局作用域和局部作用域
这篇文章介绍了JavaScript中对象的基本概念和操作,包括对象属性和方法的使用、对象字面量的创建、函数的定义和作用域的概念,以及全局作用域和局部作用域的区别和特性。
JavaScript基础&实战(4)js中的对象、函数、全局作用域和局部作用域
|
8天前
|
自然语言处理 资源调度 JavaScript
JS 逆向基础篇:JS作用域和浏览器对象属性补环境
JS 逆向基础篇:JS作用域和浏览器对象属性补环境
18 1
|
17天前
|
自然语言处理 JavaScript 前端开发
探析JS作用域
【8月更文挑战第2天】探析JS作用域
26 11
|
17天前
|
自然语言处理 JavaScript 前端开发
JS自学——快速了解词法作用域及欺骗词法作用域
JS自学——快速了解词法作用域及欺骗词法作用域
|
2月前
|
JavaScript 前端开发
JavaScript作用域关乎变量和函数的可见范围。
【6月更文挑战第27天】JavaScript作用域关乎变量和函数的可见范围。全局作用域适用于整个脚本,局部作用域限于函数内部,而ES6引入的`let`和`const`实现了块级作用域。全局变量易引发冲突和内存占用,局部作用域在函数执行后消失,块级作用域提高了变量管理的灵活性。作用域关键在于组织代码和管理变量生命周期。
26 1
|
1月前
|
JavaScript
JS 【详解】作用域
JS 【详解】作用域
11 0
|
1月前
|
缓存 自然语言处理 JavaScript
JavaScript作用域详解
JavaScript作用域详解
17 0
|
2月前
|
弹性计算 自然语言处理 JavaScript
彻底明白js的作用域、执行上下文
彻底明白js的作用域、执行上下文
|
2月前
|
存储 JavaScript 前端开发
JavaScript——JavaScript基础:数组 | JavaScript函数:使用、作用域、函数表达式、预解析
在JavaScript中,内嵌函数可以访问定义在外层函数中的所有变量和函数,并包括其外层函数能访问的所有变量和函数。①全局变量:不在任何函数内声明的变量(显式定义)或在函数内省略var声明的变量(隐式定义)都称为全局变量,它在同一个页面文件中的所有脚本内都可以使用。函数表达式与函数声明的定义方式几乎相同,不同的是函数表达式的定义必须在调用前,而函数声明的方式则不限制声明与调用的顺序。③块级变量:ES 6提供的let关键字声明的变量称为块级变量,仅在“{}”中间有效,如if、for或while语句等。
42 0

热门文章

最新文章