¿Cuál es la forma correcta de establecer una variable en localStorage?
localStorage.hello = 'world'
o
localStorage.setItem('hello','world')
El método utilizado es muy poco probable que importe. La norma enumera que los siguientes métodos son equivalentes:
storage.setItem (key, value) storage[key] = valueEstablece el valor del par identificado por clave a valor, creando un nuevo par clave/valor si no existía ninguno para la clave anteriormente.
Situaciones muy inusuales en las que se setItem y getItem a la asignación o recuperación de notación de puntos sería cuando se podría hacer referencia a las propiedades del prototipo, como con .length y .__proto__ . (Pero las claves de almacenamiento dinámico son una idea bastante mala; es mejor organizarlas en su propia matriz u objeto en una sola clave de almacenamiento. Si las claves no son dinámicas, tales colisiones no deberían ocurrir en un código sano, a menos que alguien lo haya olvidado). length está reservada)
Para ver un ejemplo de un uso problemático de length con notación de punto:
localStorage.length = '123' console.log(localStorage.length) no le dará 123 , sino el número de claves almacenadas. (La asignación falla silenciosamente). Por otro lado, usar setItem y getItem con length (o cualquier otra cadena arbitraria) funcionará.
getItem y setItem también son más compatibles con los sistemas de verificación de tipo como TypeScript y Flow que con la notación de puntos.
Personalmente, cuando no estoy usando TypeScript y cuando la clave de almacenamiento es estática, uso la notación de puntos porque es más concisa y no causa ningún problema.