如何在Javascript循环后使用变量?

问题描述 投票:0回答:2

我得到一个带有 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
2个回答
2
投票

如何确定循环在 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);

FYI(顺便说一句),你应该看看javascript中的
hoisting

,你在IF语句中声明你的'el'变量,但是var没有块作用域,即你可以/应该在下面定义el变量els 变量,以避免混淆。 例如

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
投票
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);

	
© www.soinside.com 2019 - 2024. All rights reserved.