面试题:作用域、变量提升、块级作用域、函数作用域、暂存性死区、var和let的区别
<script>var a = 10;(function () {console.log(a)a = 5console.log(window.a)var a = 20;console.log(a)})()
</script>
上述代码:
1、主要是涉及到变量提升和函数作用域,var a=20这行代码会在函数作用域中提升var a 至最顶部,并且值为undefined,所以第一个console输出为undefined;
2、在最外层使用var 定义了一个变量a,此变量a会挂载到window对象上,所以第二个console输出的是10;
3、第三个console输出为20;
<script>let a = 10;(function () {a = 5console.log(window.a)let a = 20;console.log(a)})()
</script>
上述代码:
1、主要涉及块级作用域,其中a = 5会报错,因为在块级作用域中使用let声明变量,此作用域会成为暂存性死区,let声明的变量不会进行变量提升,所以直接使用a会报错;
2、注释 a = 5这行报错代码后执行,第一个console会输出undefined,因为let声明的变量是不会挂载到window上成为window的属性的;
3、第二个console会输出20,因为上边有定义a,并且赋值为20;
总结:
1、var 是函数作用域,而 let 是块级作用域;
2、在全局作用域中使用var定义变量,此变量会成为window的一个属性;而用 let 声明的变量不会成为window的属性;
3、var 声明的变量会存在变量提升,而 let 声明的变量不会;
4、var 可以重复声明,而 let 不行;
5、只要块级作用域内存在let(或const)命令,它所声明的变量(或常量)就“绑定”在这个区域,不再受外部的影响;
6、在代码块内,使用let(或const)命令声明变量之前,该变量(或常量)都是不可用的。这种现象就称为暂存死区;
相关文章:
面试题:作用域、变量提升、块级作用域、函数作用域、暂存性死区、var和let的区别
<script>var a 10;(function () {console.log(a)a 5console.log(window.a)var a 20;console.log(a)})() </script> 上述代码: 1、主要是涉及到变量提升和函数作用域,var a20这行代码会在函数作用域中提升var a 至最顶部…...
JAVA练习49-爬楼梯
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-爬楼梯 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 2月13日练习内容…...
深兰科技机器人商丘制造基地正式投产,助力商丘经济高质量发展
2月9日,深兰科技机器人商丘制造基地投产仪式在商丘市梁园区北航创新园隆重举行。商丘市人大常委会副主任、梁园区委书记张兵,梁园区区长薛天江、河南省装备制造业协会会长张桦,河南省机器人行业协会会长王济昌,深兰科技集团董事长…...
ES倒排索引/查询、写入流程
ES学习笔记 Elasticsearch学习笔记_巨輪的博客-CSDN博客 Elasticsearch学习之图解Elasticsearch中的_source、_all、store和index属性_BUse的博客-CSDN博客 倒排索引 倒排索引:ES倒排索引底层原理及FST算法的实现过程_es fst_Elastic开源社区的博客-CSDN博客 【…...
2023软考考哪个证书好?
软考有三个级别(初级,中级和高级),这三个级别分别对应5个方向,下面这张图片呢,可以一目了然,一些小小建议!!!遵循一个原则:首先选专业对口的科目&…...
一般人我劝你不要自学软件测试!!!
本人5年测试经验,在学测试之前对电脑的认知也就只限于上个网,玩个办公软件。这里不能跑题,我为啥说:自学软件测试,一般人我还是劝你算了吧?因为我就是那个一般人! 软件测试基础真的很简单&…...
docker/docker-compose 安装mysql5.7
目录使用docker安装mysql5.7docker普通安装docker生产环境安装使用docker-compose 安装注意注意一:docker-compose权限问题注意二:docker pull 找不到镜像使用docker安装mysql5.7 docker普通安装 docker pull mysql:5.7 # 启动容器 docker run -p 3306:3306 --name mysql -e …...
【C++设计模式】学习笔记(6):Bridge 桥模式
目录 简介动机(Motivation)模式定义结构(Structure)要点总结笔记结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金…...
Allegro如何批量快速修改复用好的模块操作指导
Allegro如何批量快速修改复用好的模块操作指导 在做PCB设计的时候,相同模块可以用reuse复用的功能,可以大大提升效率,但是模块需要修改的时候,其它模块也要跟着修改,逐个再去复用一遍比较费时间,Allegro支持批量快速修改复用好的模块 前提是相同模块必须是相同的mdd文件…...
让我百思不得其解的infer究竟是怎么推导类型的?
情景再现 有这么一个条件类型的基本语法: T extends U ? X : Y; 如果占位符类型U是一个可以被分解成几个部分的类型,譬如数组类型,元组类型,函数类型,字符串字面量类型等。这时候就可以通过infer来获取U类型中某个部分的类型。 …...
E8-怎么实现根据表单内容自动生成标题
背景 可能有些小伙伴看到这个话题,觉得非常简单,在发起人步骤设置标题可编辑,在有关的控件中设置事件去更新标题就可以了呗。但如果想要标题字段里包含编号呢,而编号是在具体路径的高级设置里设置的,在某个出口生成的…...
《c语言深度解剖》--一套非常经典的笔试题
学习完c语言,需要对所学知识进行一个检测,下面有一套笔试题, 你有四十分钟进行检测,每道题五分,严格要求自己打分。 根据作者原话:在没有何提示的情况下,如果能得满分,那你可以扔掉本书了,因为你的水平已经…...
【数据结构与算法】单调队列 | 单调栈
🌠作者:阿亮joy. 🎆专栏:《数据结构与算法要啸着学》 🎇座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉…...
openh264解码h264视频帧主流程
一 解析一帧的入口int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNalUnit pNalCur) {// 解码slicePDqLayer pCurDqLayer pCtx->pCurDqLayer;PFmo pFmo pCtx->pFmo;int32_t iRet;int32_t iNextMbXyIndex, iSliceIdc;PSlice pSlice &a…...
【个人笔记】C语言位域
一句话解释位域:指定结构体内变量的的位宽,从而节省空间 例子: #include <stdio.h> struct _test {int bit1:3; // 第一个字节0 ~ 2位 int :0; // 空域:表示第一个字节 3~7都为0int bit2:1; // 第二个字节第0位int :3;…...
ROS笔记(1)——ROS的核心概念
目录 节点与管理器 话题通信 服务通信 参数——全局共享字典 节点与管理器 节点——执行单元 (1)执行具体任务的进程、独立运行的可执行文件 (2)不同节点可使用不同的编程语言,可分布式运行在不同的主机 ÿ…...
动态SQL使用【JavaEE】
动态SQL使用 1. if 标签 判断一个参数是否有值,如果没值,那么就会隐藏 if 中的 sql 语法: <if test"username!null">username#{username} </if>表达式:username 的参数是否为空 如果结果为 true,…...
leetcode刷题
1、stack栈相关 top():返回一个栈顶元素的引用,类型为 T&。如果栈为空,返回值未定义。 push(const T& obj):可以将对象副本压入栈顶。这是通过调用底层容器的 push_back() 函数完成的。 push(T&& obj)࿱…...
移动设备安全管理基础指南
什么是移动安全管理 (MSM) 移动安全管理是指为保护企业中的移动设备和企业数据而采取的行动。这些操作可以进一步被归类为反应性的或主动的,基于该操作是在数据和设备被破坏之前还是之后执行的。除了管理移动设备外,大多数MDM解决…...
【Java|多线程与高并发】 使用Thread 类创建线程的5种方法如何查看程序中的线程
文章目录前言线程创建1.继承Thread类重写run()方法如何查看程序中的线程?2.实现Runnable接口3.使用匿名内部类,继承Thread4.使用匿名内部类,实现Runnable5.⭐使用Lambda表达式,创建线程(重要)Thread 的常见构造方法总结前言 在这里主要补充说明一些问题,方便更好地理解下面的…...
别再乱点JIRA后台了!手把手教你配置项目专属的创建/编辑界面(附避坑清单)
别再乱点JIRA后台了!手把手教你配置项目专属的创建/编辑界面(附避坑清单) 当团队开始使用JIRA管理敏捷开发流程时,默认的界面配置往往成为效率杀手。开发人员创建Bug时被无关字段干扰,产品经理填写用户故事时找不到必填…...
APK安装器完整指南:在Windows上轻松安装安卓应用的终极方案
APK安装器完整指南:在Windows上轻松安装安卓应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否想在Windows电脑上直接运行手机应用&…...
装修预算告急?办公室墙面选对乳胶漆+木饰面,省一半钱还显高级
办公室墙面装修,最纠结的问题莫过于:选乳胶漆还是木饰面?前者经济实用、灵活百搭,后者质感高级、温润大气,很多企业在二者之间反复权衡,却忽略了一个关键答案——乳胶漆与木饰面搭配使用,才是兼…...
别让答辩 PPT 拖垮你的毕业季!PaperXie AI 帮你把论文成果 “说清楚”
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 论文查重过了、导师意见改完了,你以为毕业的最后一关只剩答辩?可打开 PPT 的瞬间,很多人…...
如何快速掌握歌词滚动姬:新手到专家的5个终极秘籍
如何快速掌握歌词滚动姬:新手到专家的5个终极秘籍 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 还在为音乐配上精准的LRC歌词而烦恼吗?歌词…...
【博安通BW16模组专题②】实战TCP客户端:从指令到云端数据透传
1. 认识BW16模组的TCP客户端功能 博安通BW16模组作为一款高性价比的物联网通信模块,其TCP客户端功能在实际项目中应用广泛。简单来说,TCP客户端就是能够主动连接服务器的终端设备,比如我们常见的智能家居设备连接云端服务器,就是典…...
Tegra K1深度解析:192核GPU如何重塑移动游戏与异构计算
1. 项目概述:一次移动游戏体验的底层革命 2014年,当小米发布其首款平板电脑MiPad,英伟达(Nvidia)同步推出Shield Tablet时,整个移动计算领域,尤其是安卓游戏生态,感受到了一次来自底…...
全球化技术团队协作:跨越文化差异的沟通与管理实践
1. 从“理所当然”到“文化自觉”:全球化职场的思维转型在电子设计自动化(EDA)和半导体行业摸爬滚打了十几年,我参与过跨国项目,也带过分布在全球各地的团队。一个深刻的体会是,我们这些搞技术的࿰…...
Gemini 辅助做创意写作:故事大纲、角色设定、世界观构建的 AI 协作
很多作者在创作卡壳时,其实不是“没有灵感”,而是缺一套可迭代的设计流程:大纲松散、角色像说明书、世界观看似宏大却前后不一致。2026 年的写作新趋势,是把 Gemini 当作“创作协作伙伴”而不是“代写引擎”,让它参与结…...
别再只会用Matplotlib画基础热力图了!这5个高级定制技巧让你的图表更专业
别再只会用Matplotlib画基础热力图了!这5个高级定制技巧让你的图表更专业 热力图是数据可视化中最直观的展示方式之一,但大多数数据分析师止步于基础用法。当你的图表需要出现在学术论文、商业报告或投资人演示中时,默认参数生成的热力图往往…...
