Propiedades de objetos con o sin comillas?

Avatar

Existe alguna ventaja de colocar los nombre de los objetos dentro de comillas o no? Ejemplo:

let carro = { "color" : 'red', ruedas : 4 }

Avatar

SINTAXIS DE LOS OBJETOS EN JS

Los objetos en JS son una colección de elementos en formato de clave: valor que son similares a la estructura JSON pero no iguales

Las comillas en las claves no son necesarios ni usados por que por ejemplo para declarar un objeto tienes estas opciones

OPCIÓN 1

let persona = new Object()
	persona.nombre = "Juan";
	persona.edad = 29;
	persona.programador = true

En el ejemplo anterior no se declaran comillas a las propiedades, de hecho si se hiciera marcaría un error como el siguiente

"SyntaxError: Unexpected string

Puesto que como se sobreentiende hacer esto persona."nombre" no es válido

También tienes las siguientes opciones

OPCIÓN 2

const persona = {
	nombre: "Juan",
	edad: 29,
	programador: true
}

OPCIÓN 3

const persona = {
	"nombre": "Juan",
	"edad": 29,
	"programador": true
}

Y aunque técnicamente si a la última opción le pones comillas a las claves va a funcionar, no quiere decir que brinde una ventaja en sentido alguno; de hecho como explicaba al inicio de esta respuesta, si le colocas comillas y que sean de tipo "" dobles; entonces lo que estas declarando es un JSON que es similar a un OBJETO en JS pero no lo mismo.

En resumidas cuentas no existe diferencia significativa alguna

Lo que si debes tener presente para los valores de las claves es que tipo de dato es el que vas a almacenar, revisa el siguiente ejemplo

const data = {
  nombre: "alfredo",
  edad: 29,
  email: null,
  fecha: new Date(),
  saludos: function(){
    return "Hola Mundo"
  },
  pesos: 134.34
  
}

Imprimiendo de este modo

console.log(data.nombre)
console.log(data.edad)
console.log(data.email)
console.log(data.fecha.getDate())
console.log(data.saludos())
console.log(data.pesos)

Obtengo los siguientes valores

-   "alfredo"
    
-   29
    
-   null
    
-   23
    
-   "Hola Mundo"
    
-   134.34
Necesitas iniciar sesión para responder.
Avatar

Muchos se marean con esto pero la respuesta es muy sencilla. Los nombres de propiedades siguen las mismas reglas que los nombres de las variables. Si no es un nombre de variable valido porque tiene espacios, guiones, comienza en número, etc, debe entrecomillarse de forma obligatoria.

Y voy a sonar a cascarrabias pero no me importa. Tenemos un curso gratis de JavaScript en EDteam donde se explica esto. ¿Por qué no lo ves?

Necesitas iniciar sesión para responder.
Avatar

El asunto es que poner la clave entre comillas crea un json válido que cuando sea usado a partir de una propiedad produce errores. Lo correcto es que las claves tengan las mismas reglas que las variables.

mira este codigo:

   'animal': true, 
   'adorable': true,
   'adorable-dos' : true
}


console.log(gato)
console.log(gato.adorable)
console.log(gato.adorable-dos) ```
Avatar

No es lo correcto, cuando un nombre de propiedad no sigue las reglas de las variables no se lo llama con punto sino con corchetes.

let persona = {
  "mi-nombre": "Alvaro"
}
persona["mi-nombre"] //"Alvaro"
Necesitas iniciar sesión para responder.
Necesitas iniciar sesión para responder.