2017-06-25 3 views
-2

Je suis un didacticiel qui a un exemple de code qui fonctionne, mais ne fait pas sens. J'ai lu que c'est une bonne pratique de codage d'utiliser "var" lors de la définition des variables, mais cet exemple ne semble pas fonctionner lorsque vous utilisez l'instruction "var".En JavaScript, quelle est la différence entre "content = document.get ..." et "var content = document.get ..."

function initiate() 
{ 
    content=document.getElementById("secContent"); 
    var button=document.getElementById("send"); 
    button.addEventListener("click", read, false); 
} 

Le code ci-dessus fonctionne, mais en utilisant le même code et en ajoutant "var" au "content = document.getElementById ..." ça casse. Je veux comprendre pourquoi cette différence apparemment subtile fait une si grande différence.

+1

Probablement parce que 'contenu' est déjà défini en dehors de la portée de la fonction dans le même contexte/fichier. – Dennis

+4

Copie possible de [Quelle est la portée des variables en JavaScript?] (Https://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript) –

+0

Relatif, mais pas un duplicate: [Différence entre les syntaxes de déclaration de variables en Javascript (y compris les variables globales)?] (https://stackoverflow.com/q/4862193) – Makyen

Répondre

0

Cela a déjà été dit dans les commentaires, mais très probablement, vous avez défini une variable globale avec le nom "content". Il n'est pas possible de "redéfinir" la variable dans une fonction (alors c'est une variable locale ).

Il est recommandé de changer votre variable locale nom quand il n'a rien à voir avec la variable globale , parce que votre fonction modifie la variable globale , qui peut briser le code.