gpt4 book ai didi

javascript - 遍历 FileList 声明

转载 作者:搜寻专家 更新时间:2023-10-31 23:24:51 26 4
gpt4 key购买 nike

我试图围绕一个特定的 for 循环声明来思考,但到目前为止我没有成功。代码片段允许您读取文件输入并通过 for 循环遍历所有对象:

<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object

// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
'</li>');
}
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}

document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>

现在,我想知道这个for循环什么时候执行

for (var i = 0, f; f = files[i]; i++)

停止。第二个参数不应该是像“===、<、>”之类的比较参数吗?

我可以看到在每个循环中它都将文件 [i] 中输入的每个对象的值分配给变量“f”,但我不明白为什么要这样声明它以及它是如何工作的。上面提到的和这个有什么区别?

var f;
for (var i = 0;i<files.length; i++) {
f = files[i];
}

最佳答案

Assigment总是返回赋值的值,所以语句f = files[i]返回文件,这是一个真值,直到fileList中没有更多的文件,然后返回undefined,这是假的,循环停止。

它停止的原因是因为 for 循环由三个表达式组成

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

“条件”是要在每次循环迭代之前评估的表达式。
如果此表达式的计算结果为 true,则执行该语句;如果它的计算结果为 false,如 undefined 那样,则不执行该语句。

关于javascript - 遍历 FileList 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33055201/

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