首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
说一说JS变量提升?
[问答题]
说一说JS变量提升?
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(103)
分享
纠错
84个回答
添加回答
45
牛客150990719号
函数和var声明的变量会有变量提升,js在预编译阶段会将函数和var声明的变量提升至最前面先执行,之后再按顺序执行代码块进行赋值,而let和const声明的变量只是创建提升,在预编译中将其创建,形成暂时性死区,不能提前访问和调用变量,只能在赋值之后进行调用和访问
发表于 2022-05-03 14:08:51
回复(0)
9
在度假的小哥哥很亲切
var声明会存在变量提示,函数声明也会提升,let,const不会存在变量提升问题 变量提升,函数声明提示,都是在js编译阶段提升的,将当前变量、函数提升至当前作用域的最顶端 并且由于编译阶段,并没有开始执行代码,所以都会被赋初始值undefined,由于函数不同,函数会在堆内存中开辟一个空间用于来保存函数的执行体,会将当前内存地址赋值给函数变量,所以可以在函数声明上面,来调用该函数 并且let,const声明变量会形成暂时性死区,就是在该作用域当中,无法在变量声明之前去访问,即使全局存在一个同名变量,也无法访问
编辑于 2022-04-21 10:40:12
回复(0)
5
牛客919075960号
变量提升是指,在ES6以前我们在定义变量并且赋值时,JS执行上下文首先会将变量提升到执行环境的顶端进行声明,后面在进行赋值。这导致我们可以未声明变量的情况下提前使用该变量,并且不会报错。在es6出来以后,let 和 const声明的变量必须先声明才能使用,否则会报错,并且let 和 const会有暂时性死区的概念
发表于 2022-08-03 14:18:10
回复(0)
5
牛客782467112号
变量提升是指JS的变量和函数声明会在代码编译期,提升到代码的最前面。变量提升的时候只有声明被提升,var、let和const中只有var存在变量提升。变量提升的结果,可以在变量初始化之前访问该变量,返回的是undefined。使用let和const声明的变量,在初始化之前访问会报错。函数提升优先于变量提升。
发表于 2022-05-20 09:48:30
回复(0)
3
牛客979462847号
函数和var声明的变量会有变量提升,js在预编译阶段会将函数和var声明的变量提升至最前面先执行,之后再按顺序执行代码块进行赋值,而let和const声明的变量只是创建提升,在预编译中将其创建,形成暂时性死区,不能提前访问和调用变量,只能在赋值之后进行调用和访问
发表于 2022-09-11 21:44:32
回复(0)
2
牛客326753562号
变量提升,即在代码中我们可以在变量未定以前进行调用而不报错,但值是 undefined。使用 var 进行定义的变量会发生变量提升,声明式函数也会发生 变量提升的现象。而 let 和 const 定义的变量或者使用const let 定义的函数表达式的方式都不会产生变量提升,再定义前进行调用会发生错误。
编辑于 2023-03-08 10:40:25
回复(1)
1
自信的大白菜
1.变量提升是指JS的变量和函数声明会在代码编译期,提升到代码的最前面(将当前变量、函数提升至当前作用域的最顶端)。
2.变量提升成立的前提是使用Var关键字进行声明的变量,并且变量提升的时候只有声明被提升,赋值并不会被提升,同时函数的声明提升会比变量的提升优先。
3.let,const不会存在变量提升问题,只是创建提升,在预编译中将其创建,形成暂时性死区,不能提前访问和调用变量,只能在赋值之后进行调用和访问
4.暂时性死区:暂时性死区是在变量未定义之前,就访问该变量所造成的的问题
发表于 2023-01-19 01:30:36
回复(0)
1
喜欢修勾的华夫饼在看机会
变量提升是指JS的变量和函数声明会在代码编译期,提升到代码的最前面。变量提升成立的前提是使用var关键字进行声明的变量,并且变量提升的时候只有声明被提升,赋值并不会被提升,同时函数的声明提升会比变量的提升优先。变量提升的结果是可以在变量初始化之前访问该变量,返回的是undefined。在函数声明前可以调用该函数。
发表于 2022-07-16 10:49:52
回复(0)
1
p虫++
var声明会存在变量提示,函数声明也会提升,let,const不会存在变量提升问题 变量提升,函数声明提示,都是在js编译阶段提升的,将当前变量、函数提升至当前作用域的最顶端 并且由于编译阶段,并没有开始执行代码,所以都会被赋初始值undefined,由于函数不同,函数会在堆内存中开辟一个空间用于来保存函数的执行体,会将当前内存地址赋值给函数变量,所以可以在函数声明上面,来调用该函数 并且let,const声明变量会形成暂时性死区,就是在该作用域当中,无法在变量声明之前去访问,即使全局存在一个同名变量,也无法访问
发表于 2022-07-13 11:33:36
回复(0)
1
牛客663468082号
函数和var声明的变量会有变量提升,js在预编译阶段会将函数和var声明的变量提升至最前面先执行,之后再按顺序执行代码块进行赋值,而let和const声明的变量只是创建提升,在预编译中将其创建,形成暂时性死区,不能提前访问和调用变量,只能在赋值之后进行调用和访问
发表于 2022-05-17 21:48:28
回复(0)
1
k-11
var声明的变量存在变量提升、let与const声明的变量不存在提升,但是存在暂时性死区的问题。 变量提升:在js编译阶段将该被声明的变量提升至代码的最前面。同时声明优先级来说,函数提升优先级大于变量提升,变量提升会覆盖掉函数提升 暂时性死区:暂时性死区是在变量未定义之前,就访问该变量所造成的的问题
发表于 2022-05-13 17:29:50
回复(0)
0
牛客768251747号
函数和var存在变量提升,即在js编译阶段将函数和var的声明提至顶部先执行,之后按顺序执行代码;因此可以先使用后声明 var在声明是赋值为undefined,函数会在空间中开辟一块地址,用来存放函数的 执行体,并将内存的地址赋值给函数变量; 而let和const要先声明后使用,当let和const被声明后会形成暂时性死区,不能被使用,只有在赋值之后才能继续使用
发表于 2024-04-29 10:20:41
回复(0)
0
牛客563280983号
用var声明的变量存在变量提升,可以先使用后声明,es6中let和const声明的变量不存在变量提升,如果先使用后声明,就会报错
编辑于 2024-04-08 17:42:18
回复(0)
0
田大包
JS的变量提升指的是使用var关键声明的变量在js程序开始运行的时候被提升到程序顶部,也就是程序最先开始的位置,这样的话我们可以在var关键字声明的变量被声明之前就使用它,不过这个变量有没有赋值,只要在我们调用它的之前它从没出现过,它的输出值就是undefined。而let跟const声明的变量在声明之前使用它们会报错,这是因为let跟const声明变量时会生成一个TDZ(暂时性地区),死得它们声明的变量不可以在声明之前调用。实际上,let跟const也是有变量提升的。比如,var web="hd";console.log(web);let while="aaa";提前报错,没执行到let语句就关键字错误(while不能作为变量名)。还有就是不太确定,但是我认为的是函数提升小于变量提升的。
发表于 2024-03-29 22:03:27
回复(0)
0
牛客906079186号
var 就会导致变量的提升,所以建议直接改成let。变量提升会导致变量值被覆盖,问题难以被排查。
发表于 2024-03-12 09:42:35
回复(0)
0
牛客564149083号
js是有预编译,在var声明变量的时候,var会进行预编译,所以可以在var之前访问,得到结果就是 undefined,如果用声明时函数,函数也会进行预编译,所以也可以在函数申明之前调用,在es6之后就有了 let const 用这两个字段声明的函数和变量 不会变量提升 并有这暂时性死区,不可以在之前调用
编辑于 2024-01-29 13:02:11
回复(0)
0
yoyo1206
就是将变量声明提升到当前作用域的最顶端
发表于 2023-12-08 15:05:13
回复(0)
0
橘子皮的皮卡丘
js变量提升是指使用var声明的变量会提升到代码最前面,并且只有声明提升,赋值不会提升;let和const不存在变量提升; 使用let和const声明的变量是创建提升,形成暂时性死区,在初始化之前访问let和const创建的变量会报错。
发表于 2023-10-23 20:06:52
回复(0)
0
offer快来呀~~~
使用var定义的变量、函数声明会存在变量提示,js在预编译阶段会将函数和var声明的变量及函数声明提升至最前面先执行,然后再按照顺序代码块进行赋值。变量提升的结果,可以在变量初始化之前访问该变量,返回的是undefined。在函数声明前可以调用该函数。
发表于 2023-10-23 10:51:12
回复(0)
0
kumoko
1.var存在变量提升 console.log(x) var x = 1,只有声明的变量会提升,初始化的不会 2.函数存在变量提升,当函数和变量同名时,函数声明会覆盖变量声明 3.let和const不存在变量提升,并且存在暂时性死区,无法在变量声明之前去访问
发表于 2023-10-07 20:12:31
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Javascript
上传者:
real19931
难度:
84条回答
103收藏
1356浏览
热门推荐
相关试题
ajax原理、如何实现刷新数据及优点?
迅雷
Javascript
评论
(7)
防火墙是怎么实现的?
计算机网络基础
评论
(1)
“乔布斯不做调查,张小龙不看数据。...
用户研究
评论
(1)
相关性分析有哪些?
评论
(1)
如何检验聚类分析结果
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题