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

检测未定义的对象属性

漆雕嘉茂
2023-03-14
问题内容

检查JavaScript中的对象属性是否为最佳方法是undefined什么?


问题答案:

检查属性值是否为特殊值的通常方法undefined是:

if(o.myProperty === undefined) {
  alert("myProperty value is the special value `undefined`");
}

要检查对象是否实际上没有这样的属性,并因此undefined在尝试访问它时默认情况下将返回:

if(!o.hasOwnProperty('myProperty')) {
  alert("myProperty does not exist");
}

检查与标识符关联的值是否为特殊值undefined或者 尚未声明该标识符。注意:此方法是引用
未声明的undefined标识符(注意:与的值不同)的唯一方法,且不会出现早期错误:

if(typeof myVariable === 'undefined') {
  alert('myVariable is either the special value `undefined`, or it has not been declared');
}

在ECMAScript 5之前的JavaScript版本中,全局对象上名为“ undefined”的属性是可写的,因此,foo === undefined如果不小心重新定义了简单检查,其行为可能会出乎意料。在现代JavaScript中,该属性为只读。

但是,令人惊讶的是,在现代JavaScript中,“未定义”仍然不是关键字,因此函数内的变量可以命名为“未定义”并掩盖了全局属性。

如果您担心这种情况(不太可能),可以使用void运算符获取特殊undefined值本身:

if(myVariable === void 0) {
  alert("myVariable is the special value `undefined`");
}


 类似资料:
  • 当我试图在Github上使用自己的指南测试tenstorFlow目标检测API时发生了一个错误我在运行他们指南中提到的测试脚本时遇到了以下错误 python对象检测/构建器/模型构建器测试。py/home/appu/anaconda3/envs/ml/lib/python3。6/importlib/_引导。py:219:RuntimeWarning:compiletime模块“tensorflow

  • 默认行为是,尝试访问不存在的对象的属性会生成错误: 如果组织未定义,将生成错误。当试图访问一个不存在的对象的属性时,有没有一种方法可以改变这个默认行为并只接收未定义的?有时,它比记住检查对象是否已定义更有帮助

  • 问题内容: 我已经将我的log4j2自定义插件打包到一个单独的jar中(仅包含插件类),并将其放在应用程序类路径中。但是不会被检测到。 我用谷歌搜索发现它是一个错误-“ packages”参数不再使用。还有一些链接建议了一些替代方案,其中将maven pom.xml和log4j2插件dat文件放入上下文中。问题是我不熟悉Maven,并且不知道如何生成dat文件。我只知道它包含在log4j-2.1-

  • 我正在做codecadiy的javascript教程,遇到的问题如下: console.log(friends.prop)将打印出未定义的,但如果我将其更改为 朋友[prop],它将打印账单和史蒂夫对象信息。 我看到w3c教程说有两种访问方法是正确的,我无法理解 到底是什么问题? 谢谢提前。

  • 问题内容: 我正在借助以下方法设置新的React:https : //github.com/facebookincubator/create-react- app 但是,我遇到了一个棉绒问题。我收到以下掉毛错误。 这是导致问题的代码: 我试着使用react / prop-types规则,但无济于事。 问题答案: 根据这个问题发表评论。 这似乎是因为您在安装时仅应使用create-react- ap

  • 问题内容: 我在JS应用程序中使用了localStorage,并且想知道IE9为何声明。据我所知,IE8支持它,是否可以通过任何方式使它在新版本中正常工作? 问题答案: 您是否正在本地HTML文件上对此进行测试?即一个URL? localStorage仅在HTTP网站上可用。IE9 Dev Preview中没有改变。