如果没有逻辑操作符,for循环如何知道何时停止?

How does a for-loop know when to stop without logical operators?

本文关键字:何知道 何时停 循环 for 操作符 如果没有      更新时间:2023-09-26

我使用以下示例来说明如何使用文件输入控件和file API读取多个文件:http://www.htmlgoodies.com/beyond/javascript/read-text-files-using-the-javascript-filereader.html#fbid=ZtHD9f5RFBF。

问题是for循环如何知道何时停止?看起来好像没有逻辑条件要在每次迭代中测试,只有文件变量的赋值。变量i是递增的,但是它如何影响循环的终止?

我是Javascript新手。

<input type="file" id="fileinput" multiple />
<script type="text/javascript">
  function readMultipleFiles(evt) {
    //Retrieve all the files from the FileList object
    var files = evt.target.files; 
    if (files) {
        for (var i=0, f; f=files[i]; i++) {
              var r = new FileReader();
            r.onload = (function(f) {
                return function(e) {
                    var contents = e.target.result;
                    alert( "Got the file.n" 
                          +"name: " + f.name + "n"
                          +"type: " + f.type + "n"
                          +"size: " + f.size + " bytesn"
                          + "starts with: " + contents.substr(1, contents.indexOf("n"))
                    ); 
                };
            })(f);
            r.readAsText(f);
        }   
    } else {
          alert("Failed to load files"); 
    }
  }
  document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);
</script>

files[i]变为undefined/null时,它将停止。

例子
var a = [2,3]
for (var i = 0, f; f=a[i]; i++) {
   console.log(f);
};

当a[i]第一次为2时,它将输出2

第二次a[i]为3时,它将输出3

第三次a[i]将返回undefined/null,因此表达式f=a[i]将返回结果undefined并停止。