Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

150
Views
Solo código de JavaScript que devuelve "No se pueden leer las propiedades de undefined" cuando se debe definir la propiedad del objeto

He estado tratando de resolver esto durante dos horas. El objeto tiene todos los detalles allí, debería poder encontrar esos detalles una vez llamado. Pero no lo es. Gracias por cualquier ayuda.

 if (localStorage.getItem("contactDetails")){ println("Name: " + contact.firstName); } else { var firstNameVar = prompt("What is your desired first name to log?"); var lastNameVar = prompt("What is your desired last name to log?"); var phoneNumVar = prompt("What is your desired phone number to log?"); var contact = { firstName: firstNameVar, lastName: lastNameVar, phoneNum: phoneNumVar } localStorage.setItem("contactDetails", JSON.stringify(contact)); }

El error

He intentado cambiar entre localStorage y llamarlo directamente, he intentado usar el método object["item"] en lugar de solo object.item, y algunas otras cosas.

EDITAR: Voy a tener que volver a este. He probado todas las sugerencias y sigue sin funcionar. Mi cerebro está extremadamente frito por 3 horas de un problema. Este es el código completo, no hay más código que este. Volveré en otro momento por esto. ¡Gracias por su paciencia!

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Prueba esto :

 let contact = localStorage.getItem("contactDetails") if (!!contact){ println("Name: " + contact.firstName); } else { let firstNameVar = prompt("What is your desired first name to log?"); let lastNameVar = prompt("What is your desired last name to log?"); let phoneNumVar = prompt("What is your desired phone number to log?"); contact = { firstName: firstNameVar, lastName: lastNameVar, phoneNum: phoneNumVar } localStorage.setItem("contactDetails", JSON.stringify(contact)); }

PD: Evite usar var , en su lugar use let o const .

La razón por la que insisto en no usar var en lugar de usar let o const es la siguiente:

Este código imprimirá la variable global aunque globalVar esté definido dentro de la instrucción if debido a la propiedad de alcance de var .

 if(true){ var globalVar = "Global Variable" } console.log(globalVar);

Este código le dará un error , ya que no ha definido scopedLet outside if y aún intenta acceder a esa variable.

 if(true){ let scopedLet = "Scoped Let variable" } console.log(scopedLet);

Lo mismo ocurre con const .

 if(true){ const scopedConst = "Scoped const variable" } console.log(scopedConst)

about 4 years ago · Juan Pablo Isaza Report

0

Tienes dos problemas aquí.

Un problema es que cuando llama a localStorage.setItem("contactDetails", JSON.stringify(contact)); , está almacenando una cadena, por lo que cuando llama a localStorage.getItem("contactDetails") obtiene una cadena de vuelta. Para solucionar esto, debe envolverlo en un JSON.parse(), por lo que se parece a esto: JSON.parse(localStorage.getItem("contactDetails")) .

El segundo problema es que está llamando a contact.firstName antes de definir la variable contact. Para solucionar esto, debe cambiar su declaración if para que se vea así: if (localStorage.getItem("contactDetails")){ let contact = JSON.parse(localStorage.getItem("contactDetails")) println("Name: " + contact.firstName); }

Espero que esto tenga sentido.

about 4 years ago · Juan Pablo Isaza Report

0

Hay dos problemas en su código que he notado.


Número 1

Está solicitando el valor de contact.firstName antes de definirlo.

Para solucionar esto, debe cambiar el interior de la declaración if al código a continuación.

 let t = JSON.parse(localStorage.getItem("contactDetails")) console.log("Name: " + contact.firstName);

Nota: cambié un poco la sintaxis porque no se parecía a JavaScript.

Número 2

Cuando llama a JSON.stringify() en su JSON y lo almacena en localStorage , lo está almacenando en una string . Sin embargo, cuando obtiene la clave, no está analizando el JSON. Para volver a cambiarlo, debe usar el código a continuación cuando obtenga la clave.

 JSON.parse(localStorage.getItem("contactDetails"));\
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!