这3行javascript代码让我发疯

时间:2016-07-06 00:13:46

标签: javascript

var img = new Image();

img.onerror = function () { 
    if (! img) return;
    img = undefined;
    alert("xxx.xxx.xxx.xxx is UP"); 
}

img.onload = img.onerror;

img.src = "http://xxx.xxx.xxx.xxx/123.jpg";

setTimeout(function () { 
    if (! img) return;
    img = undefined;
    alert("xxx.xxx.xxx.xxx is DOWN"); }, 5000); 
}

[1] xxx.xxx.xxx.xxx是一个主机,它可能已经启动,它可能已关闭。此代码将检查它是上升还是下降。

[2] 123.jpg是一个不存在的图像文件。

[3]我完全不理解以下3行代码

if (! img) return;
img = undefined;
alert("xxx.xxx.xxx.xxx is UP"); or alert("xxx.xxx.xxx.xxx is DOWN");

有人可以解释这三行代码吗?

1 个答案:

答案 0 :(得分:0)

好吧让我们分解

if (! img) return;

如果图片不是falsy ...我们退出函数

img = undefined

我们取消设置img变量

alert("xxx.xxx.xxx.xxx is UP");

显示弹出的上述文字

这似乎是检查图像是否存在的一种奇怪方式。我个人会这样做:

var i = new Image()
i.addEventListener('load', function(){alert('xxx.xxx.xxx.xxx is UP')})
i.addEventListener('error', function(){alert('xxx.xxx.xxx.xxx is DOWN')})
i.src="http://xxx.xxx.xxx.xxx/123.jpg";