【发布时间】:2016-01-08 09:38:53
【问题描述】:
我正试图围绕一个特定的 for 循环声明来思考,但到目前为止我没有成功。代码 sn-p 允许您读取文件输入并通过 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++)
停止。第二个参数不应该是比较参数,如“===、”等吗?
我可以看到,在每个循环中,它都将 files[i] 中每个对象输入的值分配给变量“f”,但我不明白为什么要这样声明它以及它是如何工作的。 上述和这个有什么区别?
var f;
for (var i = 0;i<files.length; i++) {
f = files[i];
}
【问题讨论】:
-
这是不好的做法,但
for循环仍然有效:f = files[i]是返回files[i]的语句。这用于“比较”或评估。只要该表达式的计算结果为undefined,它就会停止。
标签: javascript html arrays for-loop