关于js解析的问题

var a = 100

var b = function() {

    console.log(a)

    var a = 1;

}

b()





var a = 100

var b = function() {

    var a = 1;

    console.log(a)

}

b()


第一段代码打印undefined 第二段代码打印1。 我的问题是第一段不应该打印1吗,因为赋值声明会提前于执行语句,即使不打印1应该打印全局a的那个值 100?


开心每一天1111
浏览 429回答 4
4回答

扬帆大鱼

js执行顺序var a;var b;a = 100b = function() {    var a;    console.log(a)    a = 1;}b()a = 100b = function() {    var a;    a = 1;    console.log(a)}b()

GCT1015

我仅说第一段代码(相当于这样执行的):var a = 100var b = function() {    var a;  //变量声明提升    console.log(a); //这时打印应为undefined    a = 1;}b()

尚方宝剑之说

去firefox mdn查变量提升
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript