如果没有逻辑操作符,for循环如何知道何时停止?
How does a for-loop know when to stop without logical operators?
我使用以下示例来说明如何使用文件输入控件和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
并停止。
相关文章:
- AngularJS-我怎么知道何时解决了对父控制器的承诺
- Javascript 递归不知道何时退出
- 知道何时从UIWebView中开始播放YouTube视频
- 如何知道何时收到所有块
- 我怎么知道何时加载了窗口弹出窗口
- 我如何以编程方式知道何时将超过javascript堆大小
- jQuery处理程序,以知道何时在输入文本元素中键入了至少1个字符
- 知道何时下载了ObjectUrl的方法(以撤销它..)
- Javascript知道何时加载新页面
- Aurelia委托vs触发器:你如何知道何时使用委托或触发器
- 知道何时从HTML表单完成HTTP请求
- 是否可以知道何时删除属性
- 如何知道何时成功执行了多个回调,没有返回的承诺
- 如何知道何时从控制台调用JavaScript函数
- 在History.js中是否有一种方法可以知道何时按下后退按钮
- 如果没有逻辑操作符,for循环如何知道何时停止?
- 如何知道何时导入包或将其粘贴到index.html中
- 知道何时使用数组表示法将属性设置为对象
- socket.io 知道何时达到最大重新连接尝试次数限制
- 如何知道何时输入有一个:无效的选择器