首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历FileList声明

循环遍历FileList声明
EN

Stack Overflow用户
提问于 2015-10-10 14:42:39
回答 1查看 887关注 0票数 3

我正试图将我的注意力集中在循环声明上,但到目前为止,我还没有成功。代码片段允许您通过for循环读取文件输入和遍历所有对象:

代码语言:javascript
复制
<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> 

现在,我想知道这是什么时候的循环

代码语言:javascript
复制
for (var i = 0, f; f = files[i]; i++)

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

我可以看到,在每个循环中,它都将文件中每个对象输入的值赋值给变量'f‘,但我不明白为什么会这样声明它,以及它是如何工作的。上述和这个有什么区别?

代码语言:javascript
复制
var f;
for (var i = 0;i<files.length; i++) {
      f = files[i];
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-10 14:46:49

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

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

代码语言:javascript
复制
for ([initialization]; [condition]; [final-expression]) { statement

“条件”是一个要在每个循环迭代之前计算的表达式。

如果此表达式的计算结果为true,则将执行该语句,如果该语句的计算结果为false,则将不会执行该语句。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33055201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档