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

相关文章
|
15天前
|
JavaScript 前端开发
js的作用域作用域链
【10月更文挑战第29天】理解JavaScript的作用域和作用域链对于正确理解变量的访问和生命周期、避免变量命名冲突以及编写高质量的JavaScript代码都具有重要意义。在实际开发中,需要合理地利用作用域和作用域链来组织代码结构,提高代码的可读性和可维护性。
|
15天前
|
自然语言处理 JavaScript 前端开发
[JS]作用域的“生产者”——词法作用域
本文介绍了JavaScript中的作用域模型与作用域,包括词法作用域和动态作用域的区别,以及全局作用域、函数作用域和块级作用域的特点。通过具体示例详细解析了变量提升、块级作用域中的暂时性死区等问题,并探讨了如何在循环中使用`var`和`let`的不同效果。最后,介绍了两种可以“欺骗”词法作用域的方法:`eval(str)`和`with(obj)`。文章结合了多位博主的总结,帮助读者更快速、便捷地掌握这些知识点。
29 2
[JS]作用域的“生产者”——词法作用域
|
16天前
|
前端开发 JavaScript 数据处理
CSS 变量的作用域和 JavaScript 变量的作用域有什么不同?
【10月更文挑战第28天】CSS变量和JavaScript变量虽然都有各自的作用域概念,但由于它们所属的语言和应用场景不同,其作用域的定义、范围、覆盖规则以及与其他语言特性的交互方式等方面都存在明显的差异。理解这些差异有助于更好地在Web开发中分别运用它们来实现预期的页面效果和功能逻辑。
|
15天前
|
JavaScript 前端开发
如何在 JavaScript 中实现块级作用域?
【10月更文挑战第29天】通过使用 `let`、`const` 关键字、立即执行函数表达式以及模块模式等方法,可以在JavaScript中有效地实现块级作用域,更好地控制变量的生命周期和访问权限,提高代码的可维护性和可读性。
|
23天前
|
JavaScript 前端开发
javascript的作用域
【10月更文挑战第19天javascript的作用域
|
28天前
|
JavaScript 前端开发
JavaScript 作用域
JavaScript 作用域是指程序中可访问的变量、对象和函数的集合。它分为函数作用域和局部作用域。函数作用域内的变量仅在函数内部可见,而全局作用域的变量在整个网页中均可访问。局部变量在函数执行完毕后会被销毁,而全局变量则在整个脚本生命周期中都存在。未使用 `var` 关键字声明的变量默认为全局变量。
|
1月前
|
JavaScript 前端开发
js作用域
js作用域
16 1
|
2月前
|
JavaScript 前端开发
js 变量作用域与解构赋值| 22
js 变量作用域与解构赋值| 22
|
2月前
|
缓存 JavaScript 前端开发
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
该文章详细讲解了JavaScript中的作用域、闭包概念及其应用场景,并简要分析了函数柯里化的使用。
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
|
2月前
|
JavaScript 前端开发
JavaScript 作用域
JavaScript 作用域
28 9