JavaScript 对作用域、作用域链的理解?
全局作用域:
● 最外层函数和最外层函数外面定义的变量拥有全局作用域;
● 所有未定义直接赋值的变量自动声明为全局作用域;
● 所有window对象的属性拥有全局作用域;
● 全局作用域有很大的弊端,过多的全局作用域变量会污染全局命名空间,容易引起命名冲突。
函数作用域:
● 函数作用域声明在函数内部的变量,一般只有固定的代码片段可以访问到;
● 作用域是分层的,内层作用域可以访问外层作用域,反之不行。
块级作用域:
● 使用 ES6 中新增的 let 和 const 指令可以声明块级作用域,
块级作用域可以在函数中创建,也可以在一个代码块中创建(由{ }包裹的代码片段);
● let 和 const 声明的变量不会有变量提升,也不可以重复声明;
● 在循环中比较适合绑定块级作用域,这样就可以把声明的计数器变量限制在循环内部。
作用域链:
在当前作用域中查找所需变量,但是该作用域没有这个变量,那这个变量就是自由变量。
如果在自己作用域找不到该变量就去父级作用域查找,
依次向上级作用域查找,直到访问到 window 对象就被终止,这一层层的关系就是作用域链。
作用域链的作用:
是保证对执行环境有权访问的所有变量和函数的有序访问,通过作用域链,可以访问到外层环境的变量和函数。
作用域链的本质:
是一个指向变量对象的指针列表。
变量对象是一个包含了执行环境中所有变量和函数的对象。
作用域链的前端始终都是当前执行上下文的变量对象。
全局执行上下文的变量对象(也就是全局对象)始终是作用域链的最后一个对象。
当查找一个变量时,如果当前执行环境中没有找到,可以沿着作用域链向后查找。
JavaScript 对作用域、作用域链的理解?的更多相关文章
- javascript原型与原型链个人理解
想了解原型和原型链,我觉得首先我们得知道javascript里有一个Object 与 Function,它俩都是构造函数,当然函数也是一个对象.我们打印Object 与 Function看一下, co ...
- 深入理解 JavaScript 变量的作用域和作用域链
一个变量的作用域(scope)是程序源代码中定义这个变量的区域.简单的说,作用域就是变量与函数的可访问范围.全局变量拥有全局作用域,在JavaScript代码中的任何地方都有定义.局部变量是在函数体内 ...
- 理解JavaScript中的作用域链
理解了作用域链,闭包就不难理解了,所以本文主要谈一谈我对作用域链的理解. 关于JavaScript中变量的作用域,全局变量在程序中始终都有定义.局部变量在声明它的函数体内以及其内部所嵌套的函数内始 ...
- 理解JavaScript中的作用域和上下文
JavaScript对于作用域(Scope)和上下文(Context)的实现是这门语言的一个非常独到的地方,部分归功于其独特的灵活性. 函数可以接收不同的的上下文和作用域.这些概念为JavaScrip ...
- javascript篇-----函数作用域,函数作用域链和声明提前
在一些类似C语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的(也就是我们不能在代码段外直接访问代码段内声明的变量),我们称之为块级作用域,然而,不同于 ...
- javascript笔记:javascript的关键所在---作用域链
javascript里的作用域是理解javascript语言的关键所在,正确使用作用域原理才能写出高效的javascript代码,很多javascript技巧也是围绕作用域进行的,今天我要总结一下关于 ...
- 认识javascript范围和作用域链
范围 作用域就是变量和函数的可訪问范围.控制着变量和函数的可见性与生命周期,在JavaScript中变量的作用域有全局作用域和局部作用域. 全局和局部作用域以下用一张图来解释: 单纯的JavaScri ...
- javascript的关键所在---作用域链
javascript的关键所在---作用域链 javascript里的作用域是理解javascript语言的关键所在,正确使用作用域原理才能写出高效的javascript代码,很多javascript ...
- 对JS作用域和作用域链的理解
理解好javascript的变量作用域和链式调用机制对用好变量起着关键的作用,下面我来谈谈这两个概念的理解. (1)链式调用机制 作用域链的定义:函数在调用参数时会从函数内部到函数外部逐个”搜索“参数 ...
- 深入理解JavaScript中的作用域和上下文
介绍 JavaScript中有一个被称为作用域(Scope)的特性.虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,我会尽我所能用最简单的方式来解释作用域.理解作用域将使你的代码脱颖而出,减 ...
随机推荐
- POLIR-Society-Organization-Politics: “How”-只要是组织(人组成)就"不可能完美": 中国裁判文书网(最高法)的一起"断链"事件
POLIR-Society-Organization-Politics: "How"-只要是组织(人组成)就"不可能完美": 中国裁判文书网(最高法)的一起&q ...
- SciTech-Mathematics-Probability+Statistics-Distribution: fitter(Jupyter/Scipy/Python) + distributionFitter(分布拟合器): 交互式概率分布拟合 导入MATLAB® 工作区的数据
Distribution Fitter for Jupyter/Scipy/Python Using scipy for data fitting https://education.molssi.o ...
- ASCII码是什么--九五小庞
ASCII(发音:,American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统.它主要用于显示现代英语 ...
- 基于Helm部署kube-prometheus-stack
概述 GitHub地址:https://github.com/prometheus-operator/prometheus-operator Helm仓库:https://prometheus-com ...
- uni-app项目跑APP报useStore报错
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,现公司项目就是主推uni-app,最近手上项目就是要 ...
- 完全使用TRAE和AI 开发一款完整的应用----第一周
虽然也在工作使用使用ai 补全代码或者完善代码,但还是没有完全使用ai 做一款应用,不依赖手工编程.不依赖人查找资料 所以决定自己写一个应用玩玩,感受一下全完使用ai开发一款应用的乐趣, 跟上时代发展 ...
- 使用.NET实现自带思考的Tool 并且提供mcp streamable http服务
使用.NET实现自带思考的Tool 并且提供MCP服务 下面我们将使用.net实现自带思考的Tool并且提供mcp streamable http供其他AI客户端使用 创建项目 创建WebAPI项目并 ...
- AtCoder Beginner Contest 417 (A-E题解)
比赛链接 总体总结 A,B题纯模拟 C题 公式一步转换 D题 五题里面最难的,dp预处理+二分 E题 排序+BFS 题解 A题 A Substring #include <bits/stdc++ ...
- 10分钟搞定!AI表情包自由,白嫖GPT-4o,让你在群里横着走!
10分钟搞定!AI表情包自由,白嫖GPT-4o,让你在群里横着走! 作者: Leon 嘿!还在用那些糊掉渣.传了N代的"祖传"表情包?朋友,你out辣!现在AI画图都卷成麻花了,尤 ...
- Mariadb 主从配置教程
一主一从 准备:两台服务器A.B 操作: 1. 安装 mariadb 两台服务器分别安装好Mariadb #安装mariadb sudo yum install mariadb-server #开启 ...