Javascript 上传前预览图片-这行代码检查什么?

Javascript 上传前预览图片-这行代码检查什么?,javascript,Javascript,因此,我一直在寻找一种在上传前预览图像的方法,我遇到了这种方法: <script type="text/javascript"> function readURL(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function

因此,我一直在寻找一种在上传前预览图像的方法,我遇到了这种方法:

<script type="text/javascript">
        function readURL(input) {
            if (input.files && input.files[0]) {
                var reader = new FileReader();

                reader.onload = function (e) {
                    $('#blah').attr('src', e.target.result);
                }

                reader.readAsDataURL(input.files[0]);
            }
        }
    </script>

<body>
    <form id="form1" runat="server">
        <input type='file' onchange="readURL(this);" />
        <img id="blah" src="#" alt="your image" />
    </form>
</body>

函数readURL(输入){
if(input.files&&input.files[0]){
var reader=new FileReader();
reader.onload=函数(e){
$('#blah').attr('src',e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
这很有效,但有一点我不明白

如果(input.files&&input.files[0])真的能做什么

我知道input.files返回一个FileList对象,该对象允许您访问使用
元素选择的文件列表,该input.files[0]返回节点文件列表中的第一个文件,但我似乎无法理解这行代码正在检查什么

谢谢

if(input.files && input.files[0])

检查输入对象是否包含名为files using的元素及其检查以查看files对象是否是一个数组,其中至少包含on元素

检查输入对象是否具有
files
属性,以及是否在
[0]
中具有文件,第一个索引。好的,现在我明白了那行代码在做什么,谢谢@adeneo的回复,但我还是有点困惑。。。为什么他需要检查输入对象是否具有files属性?我的意思是,当file类型的输入状态发生更改时,会调用readURL方法,这样输入将始终具有files属性…感谢@Husman的响应,现在我知道了那行代码的作用,但现在我不明白他为什么这样做?当file类型的输入状态发生更改时,会调用readURL方法,这不意味着输入将始终有一个名为fils的元素吗?onChange报告所有更改,即使选择或取消选择了文件。最好检查元素是否为null(由于浏览器或安全设置可能不允许某些文件或文件大小。如果有帮助,您也可以更新答案。谢谢。是的,我想我现在明白了,再次感谢。恐怕我无法更新答案,它说我需要至少15点的声誉才能做到这一点,我只有9分。。。。