由于未知原因,局部变量返回undefined

时间:2017-04-12 11:01:34

标签: javascript ecmascript-6

我有这个功能:

getKeyboardStartingPoint() {
    let currentCellNumberElement;

    window.setTimeout(function() {
        $cells.each(function() {
            currentCellNumberElement = $(this).find('[data-number]');
            if (currentCellNumberElement.text().trim().length === 0) {
                currentCellNumberElement.css('background-color', 'orange');
                return false;
            }
        });
    }, 100);

    return currentCellNumberElement;
}

变量currentCellNumberElement在顶部的函数内本地声明,在每个循环中处理,之后我尝试提醒它。但是,变量返回undefined。元素上的css更改有效,因此变量确实有一个值,但由于某种原因,当每个循环结束时它变为未定义。这有什么问题?

1 个答案:

答案 0 :(得分:1)

在进入循环之前打印currentCellNumberElement,并为其分配值。

我认为你这样做了:

getKeyboardStartingPoint() {
    let currentCellNumberElement;

    window.setTimeout(function() {
        $cells.each(function() {
            currentCellNumberElement = $(this).find('[data-number]');
            if (currentCellNumberElement.text().trim().length === 0) {
                currentCellNumberElement.css('background-color', 'orange');
                return false;
            }
        });
        alert(currentCellNumberElement);
    }, 100);

}

但是就像JJJ所说:这里有完整的解释:Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference