Global vars avec jsFiddle

Dans l'environnement jsFiddle, je souhaite créer une boucle qui affiche les numéros 1 à 10 dans un ordre aléatoire, sans répétition.

JsFiddle ici

Entre autres choses, avoir des difficultés avec les variables globales dans l'environnement jsFiddle.

J'apprécierais:

  1. Explication re global vars in jsFiddle
  2. Faire fonctionner mon code (objectif souhaité: imprimer les numéros 1 à 10 dans un ordre aléatoire, via une boucle)

Je vous remercie

Pour la postérité, voici le code de jsFiddle:

HTML:

<div id="response"></div> <input type="button" id="mybutt" value="Get Next" /> 

Javascript / jQuery:

 var cnt; var window.arrDone = []; function nextQues() { return Math.floor(Math.random()*3) + 2; } $('#mybutt').click(function() { cnt++; console.log('Count is now: ' + cnt); if (cnt < 10) { nn = nextQues(); console.log('Testing: ' + nn); if (window.arrDone.indexOf(nn) > -1) { console.log('Already Seen: ' + nn); }else{ console.log('FOUND NEW: ' + nn); window.arrDone.push(nn); } $('#mybutt').trigger('click'); } }); 

Pour la postérité:

Toute personne qui trébuchait sur cette question tout en recherchant sa propre solution devrait également vérifier cette publication connexe SO:

L'espace de noms javascript est-il pollué?

  • Assurez-vous de lire la réponse par Joe Enos et de commenter les commentaires en dessous

Essaye ça:

 var cnt = 0; var window = {}; window.arrDone = []; 

Démonstration ici

Globals in jsfiddle sont les mêmes que dans les sites Web. Bien que le meilleur est d'utiliser no wrap dans le menu supérieur gauche de jsfiddle, et d'avoir votre propre fonction .ready() . Sinon, cela enveloppera votre code dans une fonction onload que vous n'avez pas sur votre site.