Mis notas sobre lo que se hizo en el código explicado:
- Se crea en la parte superior la lógica de persistencia al declarar STORAGE_KEY.
- Como dato importante, está en MAYÚSCULAS para avisar que esa variable es una constante "pura": un valor que no debe cambiar en toda la ejecución, como una llave de configuración o un identificador fijo.Es como poner una señal de "no tocar" en el código.
- Se continúa con funciones de guardado de storage, enfatizando en la importancia de documentar lo que hace cada función, lo que retorna y sus parámetros.
- Primero se crea saveToStorage(), recibe notas. Se valida con un if si esas notas son undefined o null, de ser así se regresa un error y se detiene el código con un return para evitar que siga guardando.
- Continuando con el else, se crea la constante notesJSON, que convierte al objeto recibido como parámetro (notas) a texto, implementando: JSON.stringify(notes)
- Se guardan esas notas en el storage con localStorage.setItem(STORAGE_KEY,notesJSON);
- Nota: localStorage solo entiende cadenas de texto, por eso es necesario usar stringify
- setItem es un método que recibe dos argumentos obligatorios: el identificador (la llave) y el valor (el dato). STORAGE_KEY es el nombre único que elegimos para encontrar ese dato después. notesJSON es el valor, que ya transformamos a texto para que el navegador pueda guardarlo.
- Después se crea la función que carga las notas (loadFromStorage()). En ella se declara la constante notesJSON, que obtiene el contenido del storage usando localStorage.getItem(STORAGE_KEY);
- Se valida si notesJSON es nulo o indefinido, de ser así, se retorna un array vacío.
- Si notesJSON tienen un valor, se declara un array vacío llamado notes que se usará más adelante.
- Se vuelven a transformar las notas obtenidas - de string a un objeto iterable usando parse: JSON.parse(notesJSON) y se le asignan a la variable parsedNotes

