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 :

problème compréhension de setDate


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut problème compréhension de setDate
    bonjour,

    j'ai du mal à comprendre le fonctionnement de setDate.

    j'ai une date qui est un lundi
    je veux savoir la date du dimanche suivant
    je fais ça :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lundi_suivant=new Date("2024-12-30");
    var dimanche_suivant=lundi_suivant;
    dimanche_suivant.setDate(dimanche_suivant.getDate() + 6);

    après l’exécution de la troisième ligne, la variable lundi_suivant a pris +6 alors que je mets le résultat dans dimanche_suivant ! c'est comme si dimanche_suivant et lundi_suivant étaient "synchronisés" ('bind' en anglais)

    où est mon problème ?

  2. #2
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut
    étrangement, quand je remplace la déclarion+initialisation de dimanche_suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dimanche_suivant=lundi_suivant;
    par cette autre méthode (ex explicitant le type)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dimanche_suivant=new Date(lundi_suivant);
    Le comportement "synchronisé/bind" ne se produit pas, plus de bug !

    est-ce un bug du moteur JS (firefox dans mon cas) ou bien c'est une spécificité JS que je ne connais pas ?

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2004
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 291
    Par défaut
    Bonjour,

    ta variable "dimanche_suivant" est de type "instance d'objet". Ce type de variable, lors d'affectation dans une autre variable, est copié par référence (référence à la même adresse mémoire) et non par valeur.
    var dimanche_suivant=lundi_suivant; => ces 2 variables pointent au même endroit. Dès que tu changes le contenu de l'une d'elles, çà impacte les 2 puisqu'ils pointent à la même adresse mémoire

    Pour que ces 2 variables soient indépendantes, il ne faut pas qu'elles pointent à la même adresse mémoire.
    var dimanche_suivant=new Date(lundi_suivant); => tu crées une nouvelle instance de l'objet Date grâce à "new Date" et tu lui l'initialises avec la date de "lundi_suivant".


    Dis-moi si çà te permets de mieux comprendre les choses ou pas.

  4. #4
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut
    ta variable "dimanche_suivant" est de type "instance d'objet". Ce type de variable, lors d'affectation dans une autre variable, est copié par référence (référence à la même adresse mémoire) et non par valeur.
    ah donc c'est comme en c++ avec le & ! je ne savais pas qu le javascript faisait ça aussi ! c'est récent ou ça a toujours existé ?

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

Discussions similaires

  1. problme de multi thread
    Par L4BiN dans le forum Concurrence et multi-thread
    Réponses: 22
    Dernier message: 25/04/2007, 16h47
  2. problme mot de passe sur feuille
    Par faby75 dans le forum Excel
    Réponses: 1
    Dernier message: 29/03/2007, 11h17
  3. [JDBC]setDate() et Heure
    Par Drizzt [Drone38] dans le forum JDBC
    Réponses: 6
    Dernier message: 01/09/2006, 09h06
  4. Réponses: 1
    Dernier message: 17/05/2006, 17h58
  5. [MySQL] Problme de variables dans requete
    Par eown dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/04/2006, 17h05

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