当前位置: 首页 > 面试题库 >

JavaScript:未定义!==未定义?

吴兴国
2023-03-14
问题内容

注意:根据 ECMAScript5.1,第15.1.1.3节,window.undefined是只读的。

  • 现代浏览器正确地实现了这一点。 例如:Safari 5.1,Firefox 7,Chrome 20等。
  • Undefined仍可在以下位置更改:Chrome 14,…

原来,问题的原因是

object.x === undefined

如果“对象”中没有属性“ x”,则返回false。

我通过在两个Facebook函数中用规则相等替换严格相等来解决该问题:

FB.Sys.isUndefined = function(o) { return o == undefined;};
FB.Sys.containsKey = function(d, key) { return d[key] != undefined;};

这使事情对我有用,但似乎暗示着Facebook的JavaScript代码与我的JavaScript代码之间存在某种冲突。

是什么原因造成的?

提示:这是有据可查的undefined == null同时undefined !==null。这不是这里的问题。问题是我们如何得到undefined !== undefined


问题答案:

事实证明,您可以将window.undefined设置为所需的任何值,并object.x!==undefined在object.x是真正的undefined时获得。就我而言,我无意中将undefined设置为null。

看到这种情况的最简单方法是:

window.undefined = null;
alert(window.xyzw === undefined); // shows false

当然,这不太可能发生。在我的情况下,该错误更加微妙,它等效于以下情况。

var n = window.someName; // someName expected to be set but is actually undefined
window[n]=null; // I thought I was clearing the old value but was actually changing window.undefined to null
alert(window.xyzw === undefined); // shows false


 类似资料:
  • 导航器的 oscpu 属性在 XP IE7 和 WIN7 IE9 计算机上抛出未定义。其他属性(如等)工作正常。 我想知道Javascript如何识别windows版本(windows Xp、7或8) 有人能帮忙吗? 编辑: 得到答案 返回这样的东西… 4.0(兼容;MSIE 7.0; MSBrowserIE7; Windows NT 5.1;. NET CLR 1.0.3705;. NET CL

  • 问题内容: 我正在尝试使用异步,在Babel 6上从头开始,但是我得到的regeneratorRuntime尚未定义。 .babelrc文件 package.json文件 .js文件 正常使用它而不需要异步/等待就可以了。有什么想法我做错了吗? 问题答案: 是必须的。您还必须安装它才能使异步/等待工作。 package.json .babelrc 带有async / await的.js(示例代码)

  • 我正在尝试使用HTML、CSS和Javascript制作一个简单的哑巴井字游戏。 在下面的播放器移动函数中,由于JSON对象中存在Typeerror,因此无法调用ComputerMove函数。 下面是JSON对象:- 检查功能始终有效,控制台响应如下 调试时,我发现在此错误之后,计算机移动()函数永远不会被调用。所以请帮忙。

  • 我被卡住了一段时间,无法弄清楚如何修复此代码

  • 问题内容: 我正在使用PHP版本5.3并尝试在我的代码中使用,但是出现错误: 我仍然可以连接到数据库。为什么不可用? 我正在使用PHP版本5.3。 问题答案: 更新 中提到的评论,一直以来5.5弃用: 自PHP 5.5起不推荐使用mysql扩展。应该改用mysqli或PDO扩展名。否决已在mysql_deprecation中确定,可以在此找到对该决定背后原因的讨论。 并 在PHP 7中删除 。 是

  • 问题内容: 我有一个简单的jquery click事件 以及在site.master中定义的jquery引用 我检查了脚本是否已正确解析,可以在Firebug中查看标记并直接查看脚本,因此必须找到我。但是,我仍然得到: $未定义 而且没有一个jQuery的作品。我还尝试了$(document).ready和jQuery等的各种变体。 这是.net 3.5上的MVC 2应用程序,我确定我真的很密集,