回答

收藏

检测未定义的对象属性

技术问答 技术问答 261 人阅读 | 0 人回复 | 2023-09-12

检查 JavaScript 未定义对象属性的最佳方法是什么?
+ m4 T6 U% m+ T' g$ M$ ?                                                               
, V  }+ U$ ]. v# U" r6 s% U    解决方案:                                                                & O# G+ Z1 Z0 h1 A6 M8 U5 P
                                                                检查属性值是否为特殊值的常用方法undefined是:5 O2 m0 e, d( j* ?6 X2 q
    if(o.myProperty === undefined) {  alert("myProperty value is the special value `undefined`");}+ w0 s6 L4 O$ u
检查对象是否实际上没有这样的属性,因此undefined当您尝试访问它时,默认返回:
; J0 ?3 J: g5 G& L, Y2 @( z
    if(!o.hasOwnProperty('myProperty) {  alert("myProperty does not exist");}6 }) k. l/ Q) ?% y& Z  e
检查与标识符相关的值是否为特殊值undefined,或者标识符是否尚未声明。注意:这种方法是引用未声明(注:与 值不同undefined)唯一没有早期错误的方法:5 e) m9 E5 k  ^7 |6 W

    & f3 J# J( {. M+ {
  • if(typeof myVariable === 'undefined') {  alert('myVariable is either the special value `undefined`,or it has not been declared」code]在 ECMAScript 5 以前的 JavaScript 版本中,全局对象被称为undefined属性是可写的,所以foo === undefined如果不小心重新定义了一个简单的检查,可能会发生意外。JavaScript 中,这个属性只读。4 E# b' s( r: ~, c# w6 [
  • 但在现代 JavaScript 中,未定义不是关键词,因此函数中的变量可以命名为未定义,并隐藏整体属性。/ S( R4 `0 m4 w6 n
  • 如果你担心这种边缘(不太可能),你可以使用它void 获得特殊操作符undefined值本身:[code]if(myVariable === void alert("myVariable is the special value `undefined`");}
    6 k5 X" `0 g" S3 p
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则