我设置了一个变量,但是在函数退出后该值会丢失

时间:2014-01-22 11:22:33

标签: javascript

我正在尝试检查是否在if / else语句中设置了变量。

如果尚未设置,我想向DOM添加一个节点,但如果已经设置,我想更新节点。

问题在于“其他”案件似乎永远不会发生。

我错过了什么?

function (response) {
    if (typeof outputmessage === 'undefined') {
        var outputmessage = document.createElement("p");
        outputmessage.innerHTML = response;
        TA.parentNode.insertBefore(outputmessage, TA.nextSibling);
    } else {
        outputmessage.innerHTML = response;
    }
}

1 个答案:

答案 0 :(得分:1)

您需要在函数范围之外声明outputmessage变量,因为每次调用函数时它都会被重置:

var outputmessage;

function (response) {
    if (typeof outputmessage === 'undefined') {
        outputmessage = document.createElement("p");
        outputmessage.innerHTML = response;
        TA.parentNode.insertBefore(outputmessage, TA.nextSibling);
    } else {
        outputmessage.innerHTML = response;
    }
}

只是为了扩展问题,由于variable hoisting您的原始代码实际上等效于以下内容,这表明outputmessage始终评估为未定义的原因:

function (response) {
    var outputmessage;
    if (typeof outputmessage === 'undefined') {
        outputmessage = document.createElement("p");
    //...
}
相关问题