Я хочу узнать разницу, если значение объекта в JavaScript не определено - PullRequest
1 голос
/ 06 августа 2020

Все переменные bar не определены. Но есть ли разница между obj.bar и obj2.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 

Ответы [ 2 ]

3 голосов
/ 06 августа 2020

В первом случае bar не объявляется. Но во втором случае bar объявляется и определяется как undefined.

Довольно сложно, способ его найти, если вы используете Object.keys(obj), вы не можете найти bar .

Кроме того, использование obj.hasOwnProperty('bar') даст вам false. Благодаря deceze за указание наружу.

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'));
0 голосов
/ 06 августа 2020

Просто сравните их, и вы узнаете

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(obj.bar == obj2.bar); //true
console.log(obj.bar === obj2.bar); //true
...