11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour
J'ai le code suivant qui provient de cette article et qui va plus dans le detail sur le concept de variable déclaration ( set / var) / initialisation/ affectation/ portée de block /protée de function { }.

Le code suivant retourne es5
var jsFuture = "es6";
(function () {
  // var jsFuture = undefined;
  // variable hoisting
  if (!jsFuture) { var jsFuture = "es5"; }
  console.log(jsFuture); // "es5"
}());





Comment modifier ce code ( interface et interne) de la function () pour que console est accès à la variable globale es6 ?
Dans le code ci dessous je redéfini / override la porté de la variable global en utilisant une variable de même nom mais local . Est til possible de faire cela sans redéfinir / déclarer un variable locale de même nom ? La création d une fonction wrapper / callback pour la variable jsFuture globale est elle la solution ?


var jsFuture = "es6";
(function ( [#red]jsFuture1[/#]) {
  var jsFuture = jsFuture1;
  // variable hoisting
  if (!jsFuture) { var jsFuture = "es5"; }
  console.log(jsFuture); // "es6"
}(jsFuture));



merci
Modifié par 75lionel (13 Aug 2015 - 22:40)
salut,
ça dépend où la variable jsFuture est déclarée. Si elle l'est dans le contexte globale, elle appartiendra à l'objet window. Tu pourras donc y accéder via cet objet :

var jsFuture = "es6";
(function () {
  // var jsFuture = undefined;
  // variable hoisting
  if (!window.jsFuture) { var jsFuture = "es5"; }
  console.log(jsFuture); // "es6"
}());

Tu récupérer la valeur plus facilement si tu comptes travailler en local :

var jsFuture = "es6";
(function (jsFuture) {
  // variable hoisting
  if (!jsFuture) {jsFuture = "es5"; }
  console.log(jsFuture); // "es6"
}(jsFuture));


EDIT : en fait contexte global peut prêter à confusion car si tu travailles avec de <iframe> ça changera la donne si tu utilises le mot-clé var.
Modifié par Zelalsan (14 Aug 2015 - 02:16)
merci je n avais pas pensé à préciser le contexte de la variable .
Smiley ajout
en gros initialisé une variable en javascript c'est
-créer un espace mémoire
-lui affecté un valeur undefined !!! ( pas une vrai affectation et implicite )
Modifié par 75lionel (11 Jun 2016 - 12:49)