Impossible de Définir la Propriété ... undefined bizarre
J'ai une erreur bizarre dans Chrome... découvrez la capture d'écran ci-dessous.
Je définir enregistrement à l'aide de l'objet de la syntaxe littérale.
J'ai essayer de définir la propriété "id" et obtenir de l'exception.
J'ai essayé les deux :
record['id'] = 'wtf';
et aussi
record.id = 'wtf';
- Je utiliser ce type de syntaxe toute la place dans mon script.... ce qui pourrait se passer ici ?
Est-ce un bug dans Chrome ?
EDIT :
J'ai résolu le problème pour l'instant, mais je ne suis toujours pas sûr de savoir pourquoi cela se passe.
J'ai déplacé la définition de l'enregistrement à se produire à l'extérieur du bloc if. Quelqu'un sait ce qui pourrait se passer ? Je pensais que toutes les déclarations de variables ont été éliminées à la fonction et, par conséquent, cela ne devrait pas être un problème.
- Je ne peux pas reproduire l'erreur (sur Chrome 7 & Firefox sur Mac). De l'info ici et la capture d'écran, il semble qu'il y ait rien de mal avec votre code. Quelle est la valeur de
record
juste avant le "erronée" de la ligne?
Vous devez vous connecter pour publier un commentaire.
Le problème est plus probable que
dl
est inférieure ou égale à zéro, de sorte que la déclaration qui initialiserecord
n'est pas exécutée. À partir de votre indentation, on dirait que vous prévu pour les deux états de faire partie de laif
bloc, mais avec pas de broches, larecord['id'] = 'wtf';
instruction est exécuté n'importe quoi.Par le déplacement de l'initialisation d'une variable à l'extérieur de l'instruction si, vous êtes forcés de se produire en tout cas et le transfert de la mission à l'intérieur du bloc if (ce qui, je suppose est ce que tu voulais).
Sans doute une meilleure façon de le résoudre est d'ajouter des accolades comme ceci:
À moins que vous vraiment ne voulez initialiser
record
dans les deux cas.Vous avez raison à propos de la variable déclarations être portée à la fonction, mais la affectation n'arrive pas jusqu'à ce que vous arrivez à ce point dans le code.
record
a été portée, mais il avait toujours sa valeur par défaut deundefined
parce que vous n'aviez pas de quoi il encore.Fonctionne pour moi, aucune raison qu'il ne devrait pas fonctionner. Êtes-vous sûr que c'est en se référant à la ligne exacte? que faire si vous
alert(record)
avant de vous le mettre? Avez-vous essayé de déboguer-il encore?