Exercice 2/31

Dans le fichier "script.js" :

  • déclarez la variable tableau qui doit contenir un tableau ordonné vide;
  • déclarez la variable test;
  • vérifiez le type de tableau et affectez-le à test;
  • affichez test avec alert();
  • cliquez sur "Soumettre ma réponse".

Leçon 2/31

Aborder les tableaux en Javascript nécessite de faire un point sur la notion d'objet.

Un objet c'est quoi :

En Javascript, une chaîne de caractères, un nombre, un booléen sont en fait des objets.

var texte = "Je suis une chaîne de caractères.";

Ci-dessus, on créé la variable texte qui contient un objet qui représente une chaîne de caractères. Plus qu'une variable, on a donc créé un objet.

La structure d'un objet :

Un objet contient toujours trois éléments :

  • un constructeur;
  • des propriétés;
  • des méthodes;

Vous avez déjà utilisé des propriétés et des méthodes natives que Javascript met à disposition pour les chaînes, les nombres, etc. Si on reprend le code précédent :

var texte = "Je suis une chaîne de caractères.";
var longueur = texte.length; // Propriété
var maj = texte.toUpperCase(); // Méthode

Dès que l'on créé une chaîne de caractères, pour Javascript ce sera un objet et il propose par défaut certaines propriétés et méthodes qui permettent de manipuler l'objet stocker dans la variable texte.

Le caractère important ici est le point ., il permet de dire que l'on souhaite accéder à la propriété length de texte qui contient l'objet en question, autrement dit la chaîne de caractères.

Pourquoi parler des objets :

Aborder cette notion maintenant est important. Soit le code suivant :

var txt = "blablabla";
var nb = 10;
alert(typeof txt); // affiche "string"
alert(typeof nb); // affiche "number"

Avec typeof on peut connaître le type d'une variable selon ce qu'elle contient. A votre avis, que donne typeof avec un tableau [] ?? Faites l'exercice pour avoir la réponse.

Commentaires les mieux notés

  • santikush

    je ne comprends pas pourquoi ma variable fonctionne présentée comme ceci: var test=typeof tableau; alors que je croyais avoir compris qu'il fallait l'indiquer de cette façon: var test=tableau.typeof;

  • mariinadaguet

    bonjour, je n'ai pas trop compris "AVEZ-VOUS BIEN AFFECTÉ LE TYPE DE "TABLEAU" À "TEST" ?" Merci

  • mram Administrateur

    Non, les exercices sont "faciles" dans le sens où ce sont des exercices sur les bases du Javascript. Ce que je dis ci-dessus c'est que pour la plupart des exercices Javascript nous avons déjà initialisé / déclaré des variables que vous avez juste à utiliser pour faire l'exercice : par contre leur contenu ne vous ai pas donné car oui après il y aurait moyen de tricher pour valider l'exercice. Donc le but n'est pas du tout de rendre les exercices difficiles, juste empêcher de contourner les énoncés.

  • mram Administrateur

    Après, il est normal que pour des gens n'ayant jamais fait de JS ces exercices ne soient pas évidents. Mais ne vous formalisez pas pour ça, il n'est pas du tout obligatoire de réussir les exercices dont le but premier est de donner un aperçu de ce que sont les langages web. Lors de la formation vous verrez tout en partant de zéro :)

20 Commentaires

  • santikush

    santikush

    je ne comprends pas pourquoi ma variable fonctionne présentée comme ceci: var test=typeof tableau; alors que je croyais avoir compris qu'il fallait l'indiquer de cette façon: var test=tableau.typeof;

    le 17/05/2017 à 15h00

  • mariinadaguet

    mariinadaguet

    bonjour, je n'ai pas trop compris "AVEZ-VOUS BIEN AFFECTÉ LE TYPE DE "TABLEAU" À "TEST" ?" Merci

    le 24/02/2017 à 11h58

  • mram

    mram Administrateur

    Non, les exercices sont "faciles" dans le sens où ce sont des exercices sur les bases du Javascript. Ce que je dis ci-dessus c'est que pour la plupart des exercices Javascript nous avons déjà initialisé / déclaré des variables que vous avez juste à utiliser pour faire l'exercice : par contre leur contenu ne vous ai pas donné car oui après il y aurait moyen de tricher pour valider l'exercice. Donc le but n'est pas du tout de rendre les exercices difficiles, juste empêcher de contourner les énoncés.

    le 31/10/2016 à 18h20

  • mram

    mram Administrateur

    Après, il est normal que pour des gens n'ayant jamais fait de JS ces exercices ne soient pas évidents. Mais ne vous formalisez pas pour ça, il n'est pas du tout obligatoire de réussir les exercices dont le but premier est de donner un aperçu de ce que sont les langages web. Lors de la formation vous verrez tout en partant de zéro :)

    le 31/10/2016 à 18h24

  • Chris

    Chris

    Je pense qu'il y a une erreur dans la description de l'exercice car il est écrit : alert(typeof "number"); // affiche "number", mais cela affiche "string" non ?

    le 29/11/2016 à 14h04

  • mram

    mram Administrateur

    Non c'est bien "typeof tableau" et non "tableau.typeof"

    le 21/05/2017 à 22h32

  • mram

    mram Administrateur

    J'ai modifié pour que ce soit plus clair.

    le 30/11/2016 à 16h43

  • markitobcn

    markitobcn

    vous faites des exercices pour aider l'étudiant ou pour le dégoûter? si je me refaire à votre commentaire suite au message de pascal-ds (ci-dessus), vous faites des exercices difficiles sinon ce serait trop facile! et les gens comme moi qui n'ont jamais fait de JS qu'est-ce que vous en faites???? Dans le monde du travaille suppose que ces énoncés, comme ils sont présentés, sont courants!!!

    le 31/10/2016 à 17h49

  • ludovicbonpoil

    ludovicbonpoil

    Comment se compliquer la vie... j'ai fait : var tableau = []; alert(typeof tableau); C'est plus simple et j'ai eu le même résultat.

    le 02/12/2016 à 16h10

  • mram

    mram Administrateur

    Il y a en effet plusieurs moyens d'arriver au même résultat, comme souvent d'ailleurs. Dans les instructions on décompose au maximum la logique du code car c'est plus accessible pour les débutants en programmation / algorithmie. ça permet de bien comprendre ce que fait telle ou telle partie du code.

    le 05/12/2016 à 23h59

  • mram

    mram Administrateur

    Il faut que la variable "test" contienne le résultat de "typeof tableau". Il faut faire un mix de vos lignes 2 et 3.

    le 24/02/2017 à 23h59

  • pascal-ds

    pascal-ds

    remarque : bien que la réponse soit déclarée bonne, alert retourne la valeur "undefined". Il faut donc déclarer la variable tableau. Ce n'est pas demandé dans l'énoncé, et comme souvent des variables sont prédéclarées en dehors du script, cela peut prêter à confusion.

    le 30/08/2016 à 09h08

  • mram

    mram Administrateur

    Oui les variables sont déclarées hors script utilisateur car sinon les exercices seraient trop faciles, et il y aurait moyen de "tricher" si vous connaissiez leur contenu, etc. Par contre, normalement pas besoin de déclarer "tableau" mais en effet si on le déclare pas dans le script utilisateur ça renvoi "undefined", certainement car l'utilisateur ne peut accéder ou tester directement des variables déjà pré-déclarées. Du coup je vais modifier l'énoncé, votre code est correct :)

    le 30/08/2016 à 14h00

  • rachid

    rachid

    Impossiblie de valide cet exercice. Voici mon exercice : var tableau = []; var test = tableau; alert(typeof tableau);

    le 09/12/2017 à 12h12

  • rachid

    rachid

    C'est bon j'ai trouvé. Allé zou a l'exo suivant.

    le 09/12/2017 à 12h15

  • pierre.jacquel

    pierre.jacquel

    Pourquoi apprendre des bêtises aux étudiants ? Une chaine n'est PAS un objet, c'est un type primitif, string en l'occurence. Si on à l'impression que c'est un objet avec des propriétés c'est à cause du wrapper objet associé. De plus c'est quoi cette histoire de constructeur ? Un objet en js n'a absolument pas besoin de constructeur ni de méthodes pour vivre sa vie d'objet...

    le 03/01/2018 à 12h20

  • mram

    mram Administrateur

    Bonjour, nous simplifions le discours. Il n'est pas nécessaire de rentrer dans les détails pour des débutants. Oui une primitive "string" est convertie en un objet temporaire pour pouvoir utiliser les méthodes (.split() ... ) et les propriétés ( length ... ) de l'objet global String. Mais ça devient plus compliqué pour des débutants.

    le 12/01/2018 à 00h43

  • Lexo

    Lexo

    Bonjour je ne comprends pas mon erreur pouvez vous m'aider merci. voici mon code var tableau [] var test = typeof tableau; alert(test)

    le 14/06/2018 à 17h25

  • mram

    mram Administrateur

    Bonjour, ligne 1 il manque le signe d'affectation = . Et c'est ligne 2 qu'il faut utiliser "typeof".

    le 19/06/2018 à 04h53

index.html
script.js
<!DOCTYPE HTML> <html> <head> <title>Tableau et objet</title> <script src="script.js"></script> </head> <body> </body> </html>