我想知道 JavaScript 中对象中的值未定义时的区别

I want to know the difference if the value in an object in JavaScript is undefined

变量'bar'全部未定义。但是obj.barobj2.bar有区别吗?

const obj = { foo: "foo" };
console.log(obj); // { foo: 'foo' }
console.log(obj.bar); // undefined 

const obj2 = { foo: "foo", bar: undefined };
console.log(obj2); // { foo: 'foo', bar: undefined }
console.log(obj2.bar); // undefined 

在第一种情况下,bar 没有声明。但在第二种情况下,bar 被声明并定义为 undefined.

比较麻烦,找方法是,如果用Object.keys(obj),就找不到bar.

此外,使用 obj.hasOwnProperty('bar') 会给你错误。感谢deceze for 出来。

const obj = { foo: "foo" };
// console.log(obj); // { foo: 'foo' }
// console.log(obj.bar); // undefined 

const obj2 = { foo: "foo", bar: undefined };
// console.log(obj2); // { foo: 'foo', bar: undefined }
// console.log(obj2.bar); // undefined

console.log(Object.keys(obj));
console.log(Object.keys(obj2));
console.log(obj.hasOwnProperty('bar'));
console.log(obj2.hasOwnProperty('bar'));