Cómo verificar correctamente que una propiedad de un objeto en JavaScript es undefined
¡Hola a todos! Soy nuevo en JavaScript y me encontré con un problema al verificar las propiedades de los objetos. Tengo un objeto user:
```javascript
const user = {
name: 'Иван',
age: 25
};
```
Quiero verificar si el objeto tiene la propiedad `email` y si es igual a `undefined`. Pero me confundo con las diferentes formas de verificación.
Por ejemplo, si escribo:
```javascript
if (user.email === undefined) {
console.log('email no está definido');
}
```
Esto funciona, pero he oído que no es seguro hacerlo así, porque la propiedad podría estar explícitamente establecida como `undefined`. Luego probé el operador `in`:
```javascript
if ('email' in user) {
console.log('la propiedad existe');
}
```
Pero aquí no entiendo la diferencia entre «la propiedad no existe» y «la propiedad existe, pero es undefined». En mi tarea necesito distinguir estos dos casos.
También vi que algunos usan `typeof`:
```javascript
if (typeof user.email === 'undefined') {
// hacemos algo
}
```
¿Cuál es la forma correcta?