首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IE8 querySelector null与普通null

IE8 querySelector null与普通null
EN

Stack Overflow用户
提问于 2013-09-10 14:43:03
回答 1查看 424关注 0票数 15

我刚在ie8上发现了非常有趣的行为。原来null并不总是null。

代码语言:javascript
运行
复制
// just normal, casual null hanging out in the sun
var nullA = null;
// query for non existing element, should get null, same behaviour also for getElementById
var nullB = document.querySelector('asdfasfdf');

// they are equal
console.log(nullA === nullB);

// false
nullA instanceof Object;

// will throw 'Object expected' error in ie8. Black magic
nullB instanceof Object;

有人能解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-13 18:34:45

简·德沃夏克绝对是对的。

根据这个答案的说法,null是本机对象,querySelector是宿主对象。

ECMA规范中没有很好地定义宿主对象行为,因此它的行为取决于实现,而IE8和IE10有不同的JScript实现,这就是为什么即使在"IE8模式“中IE10中的JavaScript引擎处理对象的方式也不同(而且更好)。这个特定实现中的特定主机对象似乎违反了Sec 4.3.8的要求,即它的prototypenullObject,因为它似乎没有继承它的instanceOf值。

这似乎是JScript的JScript实现(!== ECMAScript小姐)中的一个bug,当他们切换到脉轮发动机时,这个bug是修复的。

所有这些都是这样说的,如果你那样做会很痛苦,那就别那么做。检查一下是否是document.querySelector() === null

希望能给它一些启示。更多信息,见链接答案,他们做了很好的解释。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18721969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档