Javascript本地和全局变量混淆

这个问题在这里已经有了答案:

  • JavaScript关闭如何工作? 88个答案
  • 变量:局部范围,全局范围还是JavaScript引擎? 3个答案

  • 在Javascript中,变量声明自动移动到函数的顶部。 所以,解释者会让它看起来更像这样:

    var myname = "initial"
    function c(){
        var myname;
        // alerts undefined
        alert(myname);
        myname = "changed";
        // alerts changed
        alert(myname);
    }
    c();
    

    这被称为'提升'。

    由于提升以及任何变量的作用域是它所声明的函数这一事实,所以标准做法是在函数顶部列出所有变量以避免混淆。


    它不是取代全局变量。 发生的事情被称为“变量提升”。 那就是, var myname; 插入到函数的顶部。 在使用它们之前总是初始化你的变量 - 试试这个:

    var myname = "initial";
    
    function c() {
        alert(myname);
        myname = "changed";
        alert(myname);
    }
    
    c();
    链接地址: http://www.djcxy.com/p/1469.html

    上一篇: Javascript local and global variable confusion

    下一篇: JavaScript click handler not working as expected inside a for loop