IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 变量提升,函数提升,暂时性死区,详细解析 -> 正文阅读

[JavaScript知识库]变量提升,函数提升,暂时性死区,详细解析

变量的提升

JavaScript 在执行之前 会进行预解析

函数声明 ? 函数体会被提升到当前作用域顶部

var的声明会提升 ?并赋值undefined

? ??

?因为var会有一个变量提升,他的声明初始化会被提升,但是值不会被提升,所以控制台返回undefined

函数提升

?这是一个不规范的写法,虽然也会正常运行,因为函数体在预解析也会被提升到当前作用域顶部所以,这段代码实际解析时,调用是在函数声明之后的

大部分人都是说let和const没有变量提升(也没有错)?

但是却存在暂时性死区,却又说明了提升的存在,但是提升的到底是什么呢?

?

首先 a是一个全局的变量? 值为100

然后局部作用域内 也有一个 a? 是存在于局部作用域

调用函数,首先打印a ,正常的话,首先变量的查找机制,是就近原则,let a = 300是在打印之后

所以应该往全局去找变量a ,打印100,但是控制台直接报错,这就是暂时性死区

这里也侧面说明了,let是有变量提升的,但是和var不同的是

以下来自我平时翻阅博客得到一些知识(具体出处已经不记得了,作者当时用自己的语言翻译了官方文档,我加以理解)

let 和const 都有一个暂时性死区

?let? ? 实例化过程分为? ? ? ?创建? ? ?? ? 初始化? ??赋值?

const??实例化过程分为? ???初始化(创建和初始化合为一步)?和? ?赋值??

他们的创建都会被提升到当前作用最顶部

但是未完成初始化,所以不会和var一样报undefined? 而是直接报错?

let 未初始化 之前访问就会报错 ?? ?

const 未初始化赋值之前访问就会报错 ?? ?? ? ? ?


?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 10:59:18  更:2022-12-25 11:02:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 18:08:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码