| |
|
开发:
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项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/25 2:58:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |