首页 > 解决方案 > 如何在Javascript中循环后使用变量?

问题描述

我得到一个带有 Javascript 的元素,

var els = document.getElementsByTagName("a");

for(var i = 0; i < els.length; i++) {
if(els[i].nodeValue == 'Something') {
var el = els[i];
break;
}
}

console.log(el);

我怎样才能确定循环之前已经完成console.log

请注意,我不能放入console.log循环中。这只是一个简单的例子,我需要el进一步处理。

标签: javascript

解决方案


如何确定循环在 console.log 之前完成?

因为您正在使用 for 循环进行循环,这是一个同步循环。

for (var i = 0, max = 1000000; i < max; i++) {

}

console.log('Finished');

上面,finished 将始终在 for 循环完成它的最后一次迭代后执行。

在您的示例中,您可以确定您的日志将在循环之后执行,因为我上面说过。您无法确定的是您的变量是否未定义。

var els = document.getElementsByTagName("a");

for(var i = 0; i < els.length; i++) {

    // If this does not get hit, your 'el' will be undefined.
    if(els[i].nodeValue == 'Something') {
        var el = els[i];
        break;
    }
}

console.log(el);

仅供参考(顺便说一句),您应该查看 javascript 中的提升,您在 IF 语句中声明您的“el”变量,但是没有使用 var 的块范围,即您可以/应该在 els 变量下定义 el 变量, 以免混淆。

例如

var els = document.getElementsByTagName("a");

var el;

for(var i = 0; i < els.length; i++) {

    // If this does not get hit, your 'el' will be undefined.
    if(els[i].nodeValue == 'Something') {
        el = els[i];
        break;
    }
}

console.log(el);

推荐阅读