!obj[key] 是检查 JavaScript 中对象属性是否存在的好习惯吗?

问题描述

我时不时地看到这种模式:

if (!obj[key]) {
    // key does not exist inside object
    obj[key] = ...
} else {
    // maybe do something else with obj[key]
}

但我觉得这是非常错误的。如果实际上 obj[key] 具有值 false'' 怎么办? 那么代码对我来说没有任何意义。

我经常看到这个有什么原因吗?为什么人们不使用 .hasOwnproperty() 来检查 key 是否作为对象的属性存在?

解决方法

您应该使用 ExifTool Version Number : 10.80 File Name : dummy.jpg Directory : /home/me File Size : 452 kB File Modification Date/Time : 2021:02:02 14:41:53+02:00 File Access Date/Time : 2021:02:02 14:42:52+02:00 File Inode Change Date/Time : 2021:02:02 14:41:58+02:00 File Permissions : rw-r--r-- File Type : JPEG File Type Extension : jpg MIME Type : image/jpeg JFIF Version : 1.02 Resolution Unit : None X Resolution : 1 Y Resolution : 1 Image Width : 2480 Image Height : 3507 Encoding Process : Baseline DCT,Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2) Image Size : 2480x3507 Megapixels : 8.7 运算符:

in

如果你想特别测试对象实例的属性(而不是继承的属性),使用hasOwnProperty:

"key" in obj // true,regardless of the actual value

对于未定义hasOwnProperty和key未定义的方法之间的性能比较,请检查此reference

,

你是对的,如果你正在检查 sudo npm install n -g 道具是否存在,那么绝对不应该使用它,有更好的选择,例如 sudo n stable OR sudo n latest key 运算符,对于例子:

.hasOwnProperty