【问题标题】:LIfetime of a variable [duplicate]变量的生命周期[重复]
【发布时间】:2015-10-06 23:54:21
【问题描述】:

我在理解下面的全局变量 x 的生命周期时遇到了一些麻烦。我已经在我不理解的行上评论了我的问题..请帮助...谢谢

var target = document.getElementById("outputArea");
var outString = "";

var x = 0;
var y = 0;

callMeOften2();
callMeOften2();
callMeOften2();
outString += "<br/>";

target.innerHTML = outString;

function callMeOften2() {
    outString += x + "<br/>"; //why isn't this going to give an output of 0? but gave an output of undefined instead? isn't x referring to the global variable x?
    var x = 100;

    x = x + 100;
    outString += "from callMeoften2: " + "x = " + x + "<br/>";
}

【问题讨论】:

    标签: javascript variables lifetime


    【解决方案1】:

    这是所有 Javascript 引擎如何通过变量提升(有效地)使用您的代码

    function callMeOften2() {
        var x = undefined;
        outString += x + "<br/>"; //why isn't this going to give an output of 0? but gave an output of undefined instead? isn't x referring to the global variable x?
        x = 100;
    
        x = x + 100;
        outString += "from callMeoften2: " + "x = " + x + "<br/>";
    }
    

    希望对你有帮助

    函数中的var x表示全局x无关紧要(当然可以在浏览器中使用window.x访问,在其他环境中使用其他“全局”对象)

    【讨论】:

    • JVM是如何进入这个的?
    • 抱歉,用词不好——不知道为什么我最近开始将 Javascript 引擎称为 JVM!我也一直在做!我讨厌 Java 几乎和讨厌 JQueery 一样多!!
    • 说句公道话,JVM 可以是 Javascript Virtual Machine 的缩写,这是一个东西,所以,Java 程序员就只能默默受苦了
    • 因此,每当在函数中声明与全局变量同名的变量时......无论在什么位置......当在声明局部变量之前提到变量时......然后..这个变量仍然是指尚未声明的局部变量?
    • 变量声明被提升到当前范围的顶部。存在于其他范围内的东西是无关紧要的
    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2015-05-03
    • 2014-01-08
    • 2015-04-22
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多