猿问

变量提升到底是怎么回事?

这块代码第二个为什么弹5啊?


    var x = 1;

    var y = 2;

    method(8)

    alert(x+y)

    function method(y) {

        x += 2;

        y += 3;

        alert(x+y)

    }


凤凰求蛊
浏览 607回答 3
3回答

紫衣仙女

你这个问题要理解的不是变量提升,而是变量的作用域,你的代码和下面的代码是一样的,别看形参是y,实际上这是两个不同的值    var x = 1;    var y = 2;    method(8)    alert(x+y)    function method(a) {        x += 2;        a += 3;        alert(x+a)    }

烙印99

函数内部变量有定义就找函数内部的变量,没定义就找全局的,函数内部的变量和全局的变量名相同,前者会覆盖后者var x = 1;var y = 2;method(8)alert(x+y)function method(y) {    x += 2; //全局变量x=1+2    y += 3; //形参y=8+3    alert(x+y)}

喵喔喔

函数中的y 是参数里的y 但函数里的x还是全局的x
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答