js面试:var x = 'c' function t (){} t()变量提升

今天有同学在在群里问了一道这个题:

var x = 'c'

function t (){

var x;

console.log(x);

var x = 'c';

console.log(x);

}

为什么第一个输出是undefined?

这道题有一个很大的迷惑点,function里面有一个var x = 'c'外面也有一个var x = 'c';

下面解释为什么第一个输出是undefined:

第一:var x ;

console.log(x) 这里x本身就没有赋值,输出肯定是undefined

第二:如果你想用function里面的var x = 'c',对不起,这里会有两步值得注意

第一,var x = 'c' 首先会变量提升,也就是把var x;提到function提到function最前面,然后在最后进行赋值(x = 'c'),和你原来写的var x 的效果是一样的

解释一下如果用下function里面的var x = 'c'为什么会变量提升?

一开始的问题是,为什么会输出undefined?,注意这里的输出,首先你得有x ,不管你有没有值,你得先把要输出的变量告诉我,所以就变量提升了,至于你的值我是不关心滴

看图:

 

x在最后赋值,所以输出结果是undefined

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值