gpt4 book ai didi

javascript - for 循环语法

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:46 24 4
gpt4 key购买 nike

有人可以向我解释这部分代码。

function parent (elem, selector ) {
for ( ; elem && elem !== document; elem = elem.parentNode ) {
if ( elem.matches( selector ) ) return elem;
}
}

我明白他做了什么,但我不明白这部分循环的开始:for ( ; elem && elem !== document; ...

通常我们必须为迭代指定一个起始编号,这对我来说很奇怪这个循环。

感谢您的帮助。

最佳答案

虽然循环配置的第一部分用于设置索引,但第二部分用于循环条件。如果条件不是基于索引,那么索引可以省略。在这种情况下,循环关心传递的参数 elem,而不是索引。

事实上,for 的所有 3 个配置部分都是可选的(使 for 更像 while)。来自 MDN :

Syntax

for ([initialization]; [condition]; [final-expression])

statement

(如您所知,在出于语法目的显示的参数列表中使用 [] 是可选的。)

这是一个例子:

var obj = {}; // Not null

// Keep looping as long as obj is not null (which it isn't to start)
for ( ; obj != null; obj=null) {
console.log("Loop!"); // First time through the loop, obj != null so loop will go
} // After first iteration, obj will become null (because of 3rd part of loop config)
// so loop will terminate

话虽如此,这肯定不是一种使用 JS for 语法的优雅方式。可以使用 while 循环以更易读的方式处理逻辑:

function parent (elem, selector ) {
while (elem && elem !== document){
if (elem.matches( selector )) {
return elem;
}
elem = elem.parentNode;
}
}

关于javascript - for 循环语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48133394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com