为了账号安全,请及时绑定邮箱和手机立即绑定

关于js解析的问题

关于js解析的问题

开心每一天1111 2019-03-05 13:15:00
var a = 100var b = function() {    console.log(a)    var a = 1;}b()var a = 100var b = function() {    var a = 1;    console.log(a)}b()第一段代码打印undefined 第二段代码打印1。 我的问题是第一段不应该打印1吗,因为赋值声明会提前于执行语句,即使不打印1应该打印全局a的那个值 100?
查看完整描述

4 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

js执行顺序


var a;

var b;

a = 100

b = function() {

    var a;

    console.log(a)

    a = 1;

}

b()

a = 100

b = function() {

    var a;

    a = 1;

    console.log(a)

}

b()


查看完整回答
反对 回复 2019-03-16
?
GCT1015

TA贡献1827条经验 获得超4个赞

我仅说第一段代码(相当于这样执行的):


var a = 100

var b = function() {

    var a;  //变量声明提升

    console.log(a); //这时打印应为undefined

    a = 1;

}

b()


查看完整回答
反对 回复 2019-03-16
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

去firefox mdn查变量提升


查看完整回答
反对 回复 2019-03-16
  • 4 回答
  • 0 关注
  • 428 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号