如何在JavaScript中使用变量after循环?

时间:2018-11-01 15:55:10

标签: 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进行进一步处理。

2 个答案:

答案 0 :(得分:2)

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

因为要使用for循环(这是一个同步循环)进行循环。

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

}

console.log('Finished');

上面,finish将在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);

FYI(顺便说一句),您应该查看javascript中的hoisting,在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);

答案 1 :(得分:1)

在循环外部定义el变量。

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


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

console.log(el);