IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Assignation d'une variable


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut Assignation d'une variable
    Bonjour à tous,
    Dans le code suivant je ne comprends pas pourquoi les variables p et tab ont la même valeur alors que j'ai déclaré p = tab avant de trié tab.
    J'ai déclarer p en const mais la fonction sort() agit sur mes 2 variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var tab = ['salut', 'arabe', 'banane', 'croissant', 'pain'];
    console.log('non trie : '+tab); //non trie : salut,arabe,banane,croissant,pain
    const p = tab;
    tab.sort();
    console.log('trie : '+tab); //trie : arabe,banane,croissant,pain,salut
    console.log('p = '+p); //p = arabe,banane,croissant,pain,salut
    Merci pour votre aide et bonne journée.

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    J'ai poser la question sur le t'chat et j'ai eu la réponse de @Mermich que je poste ici si quelqu'un rencontre le même problème.

    15:51 [mermich]: Spixz> La déclaration const permet de créer une constante nommée accessible uniquement en lecture. Cela ne signifie pas que la valeur contenue est immuable, uniquement que l'identifiant ne peut pas être réaffecté.
    15:52 [mermich]: dans to code tu cree une copie du pointeur vers ton array, pas une copie de l'array...
    15:52 [mermich]: docn lorsque tu modifie le contenu du premier tu modifies aussi celui du second
    15:52 [mermich]: pour eviter ca, il faut faire une copie du contenu de ton array.

  3. #3
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Pour compléter la réponse de mermich :

    Tu peux faire une copie de tab en écrivant tab.slice().

    Si tu veux que p soit totalement immuable, tu peux le « geler » en appelant Object.freeze :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const p = Object.freeze(tab.slice());
    Toute tentative ultérieure de modification des éléments de p résultera, selon le mode (strict ou non strict), en pas d’effet, ou bien en une exception TypeError.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // mode non strict
    p[0] = "orange";
    console.log(p[0]); // "salut"
     
    // mode strict
    (() => {
      "use strict";
      p[0] = "orange"; // TypeError: 0 is read-only
      console.log(p[0]); // n’est jamais exécuté
    })();
    De la même manière, tu ne peux pas ajouter ou retirer des éléments du tableau, car cela modifierait implicitement sa propriété length, et c’est impossible car le tableau a été gelé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // dans les deux modes
    p.push("abricot"); // TypeError: can't define array index property past the end of an array with non-writable length
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/02/2010, 14h44
  2. [POO] Problème lors de l'appel d'une propriété d'un objet.
    Par akecoocoo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 08h51
  3. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37
  4. Réponses: 2
    Dernier message: 14/05/2004, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo