下面我有两行甜蜜而简单的代码。但我可以向你保证,它要么会让你很困惑(因为你忽略了 JS 的下划线原则),要么安慰你。
但它已经加载了如下知识概念
- 吊装
- 暂时死区
- 变量(未声明、未初始化、未定义)(奖励)
我的矛盾声明
就像 var、const 和 let 也提升了它们的属性,但它们位于不同的区域。
吊装Def(简单/外行版)
- 我们可以在实际声明之前访问函数和变量。
现在是时候深入了解 Js 如何编译和执行我们的两行代码了
在 JavaScript 中,编译器和引擎处理变量声明和赋值的方式可能有细微差别,尤其是在处理 let 和 var 时。
让我们从编译器和执行的角度来分解给定代码的过程:
name = 'ashu'; let name;
此时我明确表示,当我们编写 javascript 代码时,第一个解析器和编译器会编译我们的代码,然后进入执行阶段。
编译器视角
第一行: name = 'ashu';
编译阶段,
JavaScript 引擎解析代码并创建必要的范围。
作业名称 = 'ashu';
会注意到,但是在这个阶段,引擎不执行代码;它仅仅记录对名为 name 的变量的赋值的存在。
如果之前没有声明过 name,编译器会将其视为对全局变量(全局作用域中的 var name)的赋值,因为 var 声明是提升并全局可访问的。
第二行: 说出名字;
当编译器遇到let名称时;声明,它承认 name 应该是块范围的。
编译器将名称放入临时死区(TDZ) 它所属的范围,
意思是承认名称的存在,但将其标记为未初始化。
let 声明与 var 的提升方式不同。
相反,它在作用域中创建一个绑定,并仅在执行声明时初始化它。
执行视角
第一行: name = 'ashu';
当 JavaScript 引擎执行赋值 name = 'ashu'; 时,
它检查当前范围内是否存在名称。由于 name 是用 let 声明的,但位于 TDZ(暂时死区)中,在 let 声明初始化之前访问它的任何尝试都会导致 ReferenceError。
因此,此时name在TDZ中,赋值name = 'ashu';导致 ReferenceError.
第二行: 说出名字;
此行初始化块作用域内的 name 变量。
此后,名称不再位于 TDZ 中,并且可以毫无错误地访问或分配。
现在奖励小费
未声明与未定义与未初始化之间的差异;
undeclare :- 变量尚未声明。
未定义 :- 声明但未初始化的变量;
未初始化:- 变量已定义,但其值将在稍后部分出现。
例如:- const result =multiplyBy2(5);
直到函数的返回值将分配给结果,直到此时它将处于未初始化区域。
有趣的事实:-
你知道临时死区最初是为 Const 装饰的,但他们在 **Let**
中采用了较晚的时间点参考:-
- https://frontendmasters.com/courses/deep-javascript-v3 + 我与 GitHub 副驾驶的类比
以上是揭秘 JavaScript:深入探讨提升、临时死区和可变状态的详细内容。更多信息请关注PHP中文网其他相关文章!

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr

Node.js擅长于高效I/O,这在很大程度上要归功于流。 流媒体汇总处理数据,避免内存过载 - 大型文件,网络任务和实时应用程序的理想。将流与打字稿的类型安全结合起来创建POWE

Python和JavaScript在性能和效率方面的差异主要体现在:1)Python作为解释型语言,运行速度较慢,但开发效率高,适合快速原型开发;2)JavaScript在浏览器中受限于单线程,但在Node.js中可利用多线程和异步I/O提升性能,两者在实际项目中各有优势。

JavaScript起源于1995年,由布兰登·艾克创造,实现语言为C语言。1.C语言为JavaScript提供了高性能和系统级编程能力。2.JavaScript的内存管理和性能优化依赖于C语言。3.C语言的跨平台特性帮助JavaScript在不同操作系统上高效运行。

JavaScript在浏览器和Node.js环境中运行,依赖JavaScript引擎解析和执行代码。1)解析阶段生成抽象语法树(AST);2)编译阶段将AST转换为字节码或机器码;3)执行阶段执行编译后的代码。

Python和JavaScript的未来趋势包括:1.Python将巩固在科学计算和AI领域的地位,2.JavaScript将推动Web技术发展,3.跨平台开发将成为热门,4.性能优化将是重点。两者都将继续在各自领域扩展应用场景,并在性能上有更多突破。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver CS6
视觉化网页开发工具