什么是“-[1;平均值;if(!-[1,]&&!window.XMLHttpRequest)"

what does "-[1, ]" mean in " if(!-[1, ] && !window.XMLHttpRequest)"?

本文关键字:amp quot window XMLHttpRequest 平均值 if 什么      更新时间:2024-04-18

我找到了下面的代码,但我无法理解。

if (!-[1, ] && !window.XMLHttpRequest) {
    document.execCommand("BackgroundImageCache", false, true);
}

if(!-[1,])是什么意思?感谢

这是一个检测旧Internet Explorer的黑客。-[1,]在现代浏览器中是-1(所以false!),但在旧IE中是NaN(否定true)。返回正确结果的第一个版本是IE9。

这个精确的代码永远不会产生除false之外的任何其他内容,因此输入时它是无意义的。我假设这是呈现的输出,并且根据某些服务器端变量的不同,它有时可能会有所不同

由于它使用了window.XMLHttpRequest,我意识到它也可能是某种糟糕的浏览器检查形式。[1,]创建了一个数组,但后面的逗号会使数组在Chrome和Internet Explorer中得到不同的处理。Chrome会将其识别为只有一个数字的数组,可以隐式转换为数字,而IE会将其视为包含两个项目的数组,不能转换为数字。

-[1,0]将在所有浏览器中产生NaN-[1]将在所有浏览器中产生-1。因此,-[1,]将在IE中产生NaN(并因此执行代码),而在其他浏览器中产生-1(并不执行代码)。

这是一次可怕的黑客攻击。不要用它。

如果您想知道window.XMLHttpRequest是否有效,请专门测试它,而不是其他任何东西。

这是一个特别糟糕的代码:

-[1, ]结果为数字-1。

CCD_ 20将始终为假。

由于[]表示一个数组,这是不好的,因为如果该数组中有多个值,-会给你一个NaN。