function listacursos(curso1,curso2,curso3){
    let curso1=[{
        Ide: 154532,
        nombre:'marketing digital basico',
        duracion: '15 dias',
        valor: 100000,

    }];
        let curso2=[{
        Ide: 154533,
        nombre:'diseño grafico basico',
        duracion: '30 dias',
        valor: 200000,
    }];
        let curso2={
        Ide: 154534,
        nombre:'animacion digital',
        duracion:'35 dias',
        valor: 180000,
    };  
}
    setInterval(function(listacursos){
        console.log('el nombre del curso es: '+curso2.nombre)
     },3000);**strong text**

J'essaie de créer un programme qui me répertorie chaque cours variable dans la fonction "listacursos" mais je vois une erreur comme si la variable n'était pas déclarée, j'ai tout essayé car il doit afficher un message avec les informations de chaque cours dans une durée de 2 secondes, je sais faire la temporisation mais je n'arrive pas à faire l'impression avec le console.log.

C'est l'erreur que le cmd m'affiche entrez la description de l'image ici

0
Tomas Felipe Loaiza 16 mars 2019 à 07:29

2 réponses

Meilleure réponse

La raison pour laquelle vous ne pouvez pas accéder aux variables à l'intérieur de votre fonction listacursos est due à la portée des variables.

En Javascript, il existe deux types de variables ; les variables déclarées à l'intérieur des fonctions sont à portée locale, ce qui signifie qu'elles ne sont accessibles que dans cette fonction :

function example(){
   let foo = "test1";
   console.log(foo); // Fine!
}
console.log(foo); // Raises an Error

Et de portée globale, des variables déclarées en dehors d'une fonction, accessibles partout :

const foo = "test1";
function example(){
   console.log(foo); // Fine!
}
console.log(foo); // Fine!

Il s'agit d'une explication quelque peu simplifiée, mais il existe une explication ici .

1
Derek Brown 16 mars 2019 à 04:57

La réponse de Derek Brown est correcte par je vais ajouter plus de précision à votre code

function listacursos(curso1,curso2,curso3){
    let curso1=[{
        Ide: 154532,
        nombre:'marketing digital basico',
        duracion: '15 dias',
        valor: 100000,

    }];
        let curso2=[{
        Ide: 154533,
        nombre:'diseño grafico basico',
        duracion: '30 dias',
        valor: 200000,
    }];
        let curso2={ //You already declare a "curso2" variable 
        Ide: 154534,
        nombre:'animacion digital',
        duracion:'35 dias',
        valor: 180000,
    };  
}
    setInterval(function(listacursos){ // Your function 'listacurso' doesn't return anything, so you are just executing it.
        console.log('el nombre del curso es: '+curso2.nombre)
     },3000);

Pour que cela fonctionne, je suggère que vous fassiez quelque chose comme

    function listacursos(){
        let obj = {};
        let curso1=[{
        Ide: 154532,
        nombre:'marketing digital basico',
        duracion: '15 dias',
        valor: 100000,

    }];
        let curso2=[{
        Ide: 154533,
        nombre:'diseño grafico basico',
        duracion: '30 dias',
        valor: 200000,
    }];
        let curso3={
        Ide: 154534,
        nombre:'animacion digital',
        duracion:'35 dias',
        valor: 180000,
    };
    obj.curso1 = curso1;
    obj.curso2 = curso2;
    obj.curso3 = curso3;
    return obj;
}
    setInterval(function(){
        let courso = listacursos();
        console.log('el nombre del curso es: ', courso.curso2[0].nombre)
     },3000);

Ce qui veut dire que vous stockez chaque "curso" dans un "obj" un JS JSON pour être plus précis et que vous le renvoyez. Ensuite, vous créez une variable pour stocker ce JSON, la variable "curso".

Comme "curso2" est en fait un tableau, vous devez ajouter "[0]" afin de lire le JSON à l'intérieur.

Vous pouvez en savoir plus sur JSON ici : https://www.w3schools.com/js/js_json. asp

0
Marin Mouscadet 16 mars 2019 à 09:06