1. 首页
  2. IT资讯

JS面试知识点 变量提升

“u003Cdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002Ff640beae-7b1e-42c2-a84d-c72a68d215b3″ img_width=”211″ img_height=”146″ alt=”JS面试知识点 变量提升” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E变量提升,也可以说成是变量声明提升,是指在Javascript中变量的声明会被提到作用域的顶部,而变量的赋值留在原地,具体我们可以看看下面这个问题:u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003EQ : 下面的这段代码执行结果是什么?u003Cu002Fpu003Eu003Cpreu003Evar a = 1;u003Cbru003Efunction test(){u003Cbru003E console.log(a);u003Cbru003E var a = 2;u003Cbru003E}u003Cbru003Etest();u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E如果你至今还不知道什么是变量提升,你可能会认为在函数test外部已经声明并赋值了a=1,u003Cu002Fpu003Eu003Cpu003E那么函数内部第一行的log结果应该就是 1 。那我们把代码复制进浏览器看看结果吧:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002Fa70f1252-6bc5-41a2-8b03-927e75116efa” img_width=”440″ img_height=”64″ alt=”JS面试知识点 变量提升” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E输出结果为 undefinedu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002Fc28fa4ebc6b2485bb745e4dd92d7bfac” img_width=”240″ img_height=”240″ alt=”JS面试知识点 变量提升” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E其实,按照本文上面对变量提升的说明,也就不难理解了,实际代码运行的顺序应当是这样的:u003Cu002Fpu003Eu003Cpreu003Evar a = 1;u003Cbru003Efunction test(){u003Cbru003E var a; u002Fu002F声明被提前u003Cbru003E console.log(a);u003Cbru003E a = 2; u002Fu002F赋值留在原地u003Cbru003E}u003Cbru003Etest();u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E值得一提的是:如果把变量声明的关键字 var 换成 let ,则会出现一个如下的错误:u003Cu002Fpu003Eu003Cpreu003EVM515:3 Uncaught ReferenceError: a is not definedu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E你理解了吗?u003Cu002Fpu003Eu003Cpu003E在这里提出另一点思考,如果我把代码稍作修改:u003Cu002Fpu003Eu003Cpreu003Evar a = 1;u003Cbru003Efunction test(){u003Cbru003E console.log(a);u003Cbru003E a = 2;u003Cbru003E}u003Cbru003Etest();u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E结果会是怎样呢?u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:JS面试知识点 变量提升

主题测试文章,只做测试使用。发布者:℅傍ㄖ免沦陷dε鬼,转转请注明出处:http://www.cxybcw.com/11248.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code