我得到一个带有 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
进行进一步处理。
如何确定循环在 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);
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);