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

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

    var x = 1;
    var y = 2;
    method(8)
    alert(x+y)
    function method(y) {
        x += 2;
        y += 3;
        alert(x+y)
    }
阅读 2.1k
3 个回答

你这个问题要理解的不是变量提升,而是变量的作用域,你的代码和下面的代码是一样的,别看形参是y,实际上这是两个不同的值

    var x = 1;
    var y = 2;
    method(8)
    alert(x+y)
    function method(a) {
        x += 2;
        a += 3;
        alert(x+a)
    }

函数内部变量有定义就找函数内部的变量,没定义就找全局的,函数内部的变量和全局的变量名相同,前者会覆盖后者

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题