00:00:00
on se retrouve pour une nouvelle vidéo
00:00:01
on va parler aujourd'hui des questions
00:00:02
en Javascript que j'ai vu passer en
00:00:04
entretien que ce soit dans des grosses
00:00:06
boîtes ou dans des start-up
00:00:07
[Musique]
00:00:12
et du coup on commence tout de suite
00:00:13
avec qu'est-ce que les high order
00:00:15
fonctionne ou alors vous verrez qu'est
00:00:17
ce que les hoc je vous conseille de
00:00:19
commencer par une toute petite
00:00:20
définition vous pouvez dire qu'en fait
00:00:21
les h possible
00:00:23
ce sont des fonctions qui peuvent
00:00:25
prendre en paramètre une ou plusieurs
00:00:27
fonctions également ces fonctions
00:00:28
peuvent retourner une fonction vous
00:00:30
pouvez enchaîner et dire que en
00:00:32
Javascript une fonction considérée comme
00:00:34
un objet ce qui signifie que vous pouvez
00:00:36
la passer en argument à une autre
00:00:37
fonction vous avez sûrement dû voir
00:00:39
passer des orderfox même si vous
00:00:42
connaissez pas la définition les
00:00:43
méthodes les plus populaires qui
00:00:45
illustrent ces fonctions sont par
00:00:46
exemple map Peter Genius etc et on va
00:00:50
voir tout de suite un exemple ensemble
00:00:51
avec map là vous avez du coup un tableau
00:00:53
d'objets qui contient des données sur
00:00:55
des fusées donc avec le nom et la
00:00:58
vitesse max pour chaque data ok ensuite
00:01:00
on a un map sur ce tableau
00:01:03
avec une fonction à l'intérieur qui va
00:01:05
permettre de doubler la vitesse voilà un
00:01:07
exemple de order fonctionne si on Ron ce
00:01:09
fichier on devrait avoir un nouveau
00:01:11
tableau parce que map du coup ça crée un
00:01:13
nouveau tableau ce qui aura du coup
00:01:14
c'est donner là parce qu'on garde le nom
00:01:16
mais par contre vitesse max on prend la
00:01:19
vitesse max de ce tableau là et on la
00:01:21
double d'accord on devrait avoir 11 etc
00:01:22
si je Ron voilà nouveau tableau avec
00:01:25
vitesse max 11 15.6 16.2 15.8 voici un
00:01:29
exemple de i Ender fonctionne pour
00:01:31
conclure vous pouvez lui dire que grâce
00:01:32
à ses fonctions on a une meilleure
00:01:33
modularité ça facilite la maintenance du
00:01:36
code et ça réduit également les erreurs
00:01:38
quelles sont suivantes avec qu'est-ce
00:01:40
qu'une promise en Javascript je pense
00:01:42
que cette question je l'ai eu au moins
00:01:44
60-70% du temps en entretien vous pouvez
00:01:46
commencer par dire que une promise ça
00:01:48
permet de traiter certaines opérations
00:01:49
asynchrone comme les appels aux API ou
00:01:51
les appels aux bases de données promise
00:01:52
en JavaScript en fait c'est un objet
00:01:54
représentant une valeur qui pourrait
00:01:56
être disponible maintenant plus tard ou
00:01:58
jamais donc il faut connaître les trois
00:02:00
états possibles pour une promise
00:02:04
on va voir ensemble un exemple là ce que
00:02:06
vous avez à l'écran du coup c'est un
00:02:07
exemple pour une promise donc si on
00:02:09
inspecte un petit peu plus le code ici
00:02:11
on a get card from et pi qui contient
00:02:13
une nouvelle promise avec à l'intérieur
00:02:15
du coup résolve et régime on utilise
00:02:18
cette prime out pour simuler un appel à
00:02:21
la paye donc c'est pour ça qu'on va
00:02:22
mettre un petit délai de une seconde on
00:02:24
a une fausse de données en dur qui
00:02:25
contient du coup une Renault et une
00:02:28
Peugeot d'accord et ici on a un petit if
00:02:30
qui dit si on a une voiture du coup bah
00:02:32
risole avec la voiture et si on n'a pas
00:02:34
du coup rejette avec une erreur donc ici
00:02:35
comment est-ce qu'on utilise la fonction
00:02:37
on fait get card from FPL ok point
00:02:40
d'aile si tout se passe bien du coup la
00:02:43
voiture on vous consoler la marque le
00:02:45
modèle et l'année si ça se passe mal on
00:02:46
veut catch l'erreur OK et donc ça
00:02:48
passera dans le reset donc si je fais
00:02:50
avec l'ID 1 on devrait avoir normalement
00:02:52
les données de cette ligne là on va voir
00:02:56
ça prend une seconde parce que j'ai un
00:02:58
délai ici d'une seconde encore une fois
00:02:59
c'est pour simuler la synchrone on a
00:03:01
bien marre chrono modèle tuyau année
00:03:03
2020 si je mets donc 2 on devrait quand
00:03:06
même passer donc avec le resolve parce
00:03:08
que ça fonctionne et on a bien Peugeot
00:03:11
modèle 208 année 2021 si je mets un
00:03:14
modèle qui n'existe pas
00:03:17
on devrait avoir donc un reget avec un
00:03:19
consoloc aucune voiture trouvée avec
00:03:21
l'ID que j'ai passé et voilà aucune
00:03:24
voiture trouvée avec Lady 5 voilà
00:03:26
comment est-ce qu'on peut utiliser une
00:03:27
promise prochaine question qu'est-ce que
00:03:29
la syntaxe A5
00:03:32
A5 a été construite par dessus les
00:03:35
premiers pour offrir une alternative à
00:03:37
leur utilisation vous pouvez commencer
00:03:38
par expliquer qu'en fait ça permet plus
00:03:40
de simplicité on verra ensemble dans
00:03:41
l'exemple mais vous verrez on l'a plus
00:03:42
besoin d'enchaîner les opérations comme
00:03:44
avec les promis vos croiserez de manière
00:03:46
générale plus de fois cette écriture là
00:03:48
que l'écriture classique des premiers on
00:03:50
va regarder ensemble un exemple donc
00:03:51
pour l'exemple maintenant avec A5 awake
00:03:53
on reprend le même exemple qu'on avait
00:03:55
utilisé pour les promisses parce que du
00:03:56
coup à 5 kwate et écrit au dessus des
00:03:59
promices donc du coup ce qu'on va faire
00:04:00
c'est que c'est juste une démonstration
00:04:02
d'une autre manière d'écrire des
00:04:03
promises donc comment est-ce qu'on fait
00:04:05
ici on a la même chose qu'on avait avant
00:04:07
ok toujours l'idée c'est de d'aller
00:04:09
chercher des données de voiture par
00:04:11
contre cette fois-ci on utilise à 5
00:04:13
awake et c'est comme ça qu'on écrit avec
00:04:15
l'aide là il y a une petite fonction
00:04:16
fléchée également à 5 awake ok donc
00:04:19
toujours pareil si ça fonctionne bien on
00:04:21
aimerait loguer la marque le modèle et
00:04:23
l'année de la voiture si ça fonctionne
00:04:25
mal on aimerait du coup avoir ceci et
00:04:27
vous allez voir que ça fonctionne de la
00:04:28
même manière là si je mets display car 1
00:04:32
j'essaie de d'avoir les données de cette
00:04:34
ligne là si je ronronne ou script j'ai
00:04:37
bien marre Renault Clio 2020 maintenant
00:04:40
si je mets une voiture qui n'existe pas
00:04:42
j'ai bien encore une fois le
00:04:44
fonctionnement avec le reset qui est
00:04:47
passé dans le catcheur ok aucune voiture
00:04:49
trouvée avec Lady 8 voilà comment est-ce
00:04:51
qu'on peut utiliser de manière plus
00:04:53
moderne du coup l'écriture avec à 5
00:04:55
watts prochaine question qu'on va voir
00:04:57
ensemble c'est qu'est-ce que sont les
00:04:58
fonctions arrow et quelles sont leurs
00:05:00
différences avec les fonctions
00:05:01
classiques j'ai eu beaucoup de fois
00:05:03
cette question également donc elle se
00:05:04
distingue déjà par la façon dont on
00:05:06
écrit la fonction elles sont
00:05:07
représentées par un symbole fléché mais
00:05:09
vous allez devoir aussi parler des
00:05:10
différences sémantiques mais aussi des
00:05:12
limitations comme vous voyez l'écran on
00:05:13
peut se passer des accolades ou comme du
00:05:15
mot clé rituel si jamais du temple peut
00:05:17
se faire sur une seule ligne vous allez
00:05:19
aussi pouvoir aller un petit peu plus
00:05:20
loin en expliquant qu'en fait les
00:05:22
fonctions arômes n'ont pas de bindings
00:05:23
vous pouvez parler aussi de propres
00:05:24
liaisons qu'elles peuvent pas être
00:05:26
utilisées comme méthode vous pouvez
00:05:27
aller encore plus loin et parler de la
00:05:29
particularité de javascript qui est le
00:05:31
hosting ça permet avant l'exécution du
00:05:33
code de remonter les déclarations de
00:05:35
variables et de fonction au sommet de
00:05:37
leur portée globale au local en gros ça
00:05:40
permet d'accéder à certaines variables
00:05:42
ou fonctions avant même qu'elle soit
00:05:43
définie dans le code pour comprendre un
00:05:46
petit peu plus on va regarder un exemple
00:05:47
donc maintenant grâce à cet exemple là
00:05:48
maintenant on va surtout expliquer le
00:05:49
concept de hosting donc là vous avez vu
00:05:52
j'ai une fonction écrit de manière
00:05:53
régulière si vous voulez qui console
00:05:56
loge juste je suis Arthur au dessus j'ai
00:05:58
un consolide salut mais j'appelle cette
00:06:00
fonction que j'ai déclaré ici je
00:06:02
l'appelle ligne une d'accord donc à
00:06:04
votre avis qu'est-ce qui va se passer si
00:06:05
je clique sur run je suis Arthur et
00:06:07
salut ça veut dire que je peux utiliser
00:06:09
la fonction que j'ai déclaré ligne 5
00:06:11
avec une écriture classique qui n'est
00:06:13
pas fléchée même si je l'appelle avant
00:06:15
ligne une qu'est-ce qui se passe si
00:06:17
jamais cette fois-ci je transforme cette
00:06:19
fonction en fonction fléchée et que je
00:06:22
souhaite quand même l'appeler au début
00:06:23
de mon fichier on transforme la fonction
00:06:25
on enlève ceci on a une seule ligne donc
00:06:29
la caisse qui se passe à votre avis si
00:06:31
je lance ça est-ce que ça va fonctionner
00:06:33
ce que je vais avoir une erreur
00:06:35
exactement j'ai une erreur pourquoi
00:06:37
parce qu'en fait je vous ai expliqué que
00:06:38
c'est très différent quand on écrit une
00:06:40
fonction fléchés et quand on écrit une
00:06:42
fonction avec une écriture classique le
00:06:45
hosting ne fonctionne pas de la même
00:06:47
manière comme si une fonction fléchée à
00:06:49
Signal constante elle ne peut pas être
00:06:51
accéder avant son initialisation d'où
00:06:53
l'erreur qu'à note access display before
00:06:55
initialise vous faites très attention à
00:06:57
ça prochaine question avec est-ce que
00:06:59
javaScript est un langage case sensitive
00:07:01
la réponse rapide c'est oui javaScript
00:07:03
est un langage qui est très sensible à
00:07:05
la casse fait ça signifie que les mots
00:07:07
clés les noms variables les noms de
00:07:08
fonctions et tous les autres
00:07:10
identifiants doivent être toujours typé
00:07:12
avec une capitalisation de lettres
00:07:14
cohérent on passe à l'exemple pour mieux
00:07:16
comprendre donc la petite exemple du
00:07:17
coup pour vous montrer que JavaScript et
00:07:19
Keys sensitive d'accord c'est très
00:07:20
important à votre avis donc là l'être ma
00:07:23
variable également
00:07:24
variable égale salut j'ai écrit de la
00:07:27
même manière qu'est-ce qui va se passer
00:07:29
si je clique sur Ron j'ai une erreur
00:07:31
d'accord parce qu'il écrit que ça a déjà
00:07:34
été déclaré c'est exactement la même
00:07:36
chose par contre si jamais je commence
00:07:39
ça et j'ai écrit une autre variable
00:07:41
c'est la même c'est la même chose mais
00:07:43
il y a un petit V minuscule et ce que je
00:07:46
vais avoir une erreur je n'ai pas
00:07:47
d'erreur j'ai cliqué sur run j'ai pas
00:07:49
d'erreur d'accord donc c'est très
00:07:51
important donc c'est comme ça vous
00:07:52
pouvez justifier le côté caisse
00:07:54
sensitive de JavaScript autre question
00:07:55
vous allez potentiellement avoir c'est
00:07:57
quels sont les différentes manières
00:07:58
d'accéder à du html avec le Javascript
00:08:01
vous pouvez lister les différentes
00:08:02
manières d'y accéder vous pouvez parler
00:08:03
de Get element by get lemon by class
00:08:07
name
00:08:08
ou encore quaris Elector et pour aller
00:08:10
un petit peu plus loin dans la réponse
00:08:12
vous pouvez expliquer que ces méthodes
00:08:14
sont disponibles via l'objet document
00:08:16
qui représente le dôme du navigateur une
00:08:18
question que vous allez avoir et qui est
00:08:19
un petit peu piège il faut la connaître
00:08:21
c'est quelle est la différence entre nul
00:08:23
et undy fine c'est très important de pas
00:08:25
vous emmêler des pâtes unifine ça
00:08:27
signifie qu'une variable a été déclarée
00:08:28
mais qu'aucune valeur ne lui a été
00:08:30
attribuée c'est la valeur par défaut des
00:08:32
variables quand elles sont déclarées là
00:08:34
ce que vous voyez à l'écran ça vous de
00:08:36
comprendre en fait ce qui se passait si
00:08:37
on veut loger la variable par contre nul
00:08:40
c'est une valeur d'affectation on
00:08:42
assigne nulle souvent une variable pour
00:08:44
représenter l'absence de valeur si vous
00:08:47
voulez aller encore plus loin que ça
00:08:48
vous pouvez expliquer que nul est
00:08:50
undefine ils sont de type différents et
00:08:52
de type unifine nul et de type objet on
00:08:56
va voir tout ça avec un exemple petit
00:08:58
exemple pour vous expliquer un petit peu
00:08:59
comment fonctionne une nulle et unifine
00:09:02
là j'ai juste déclaré une variable
00:09:03
d'accord j'ai rien à signer j'ai juste
00:09:05
déclaré une variable et je la loge
00:09:07
qu'est-ce que ça va loger dans mon autre
00:09:09
put là si je clique sur RAM à votre avis
00:09:11
ça va loger ondefine parce que j'ai
00:09:13
déclaré ma variable mais je lui ai signé
00:09:15
aucune valeur donc par défaut quand vous
00:09:17
faites ça c'est un par contre
00:09:20
si jamais je lui assigne la valeur nulle
00:09:23
qu'est-ce qui va se passer
00:09:25
par contre vous avez vu j'ai bien la
00:09:27
valeur nulle parce que j'ai bien nul et
00:09:29
bien une valeur d'affectation autre
00:09:31
chose que je voulais vous montrer c'est
00:09:32
quand on compare les types donc là on va
00:09:35
regarder ce que c'est le type de undy et
00:09:37
le type de nul donc là je vous avais
00:09:38
expliqué il y a une différence très
00:09:39
importante à votre avis qu'est-ce que ça
00:09:41
va loger si je clique sur Rome on a bien
00:09:43
undefine parce que c'est un type et le
00:09:46
type de indifférent par contre le type
00:09:48
de nul c'est un objet voilà il faut
00:09:51
connaître ces deux différences comme ça
00:09:52
vous pouvez en parler en entretien autre
00:09:53
question quels sont les types de données
00:09:55
pris en charge par JavaScript on va
00:09:57
commencer par quelque chose dont on a
00:09:59
parlé juste avant un define ça
00:10:01
représente une variable qui a été
00:10:02
déclarée mais qui n'a pas encore de
00:10:03
valeur ensuite on a nul ça représente
00:10:06
l'absence de toute valeur on a Buléon sa
00:10:09
caractérise une valeur trop ou fausse
00:10:11
pour la string qui représente des
00:10:12
chaînes de caractères on a number qui
00:10:15
représente donc les nombres on a
00:10:16
évidemment objet qui représente une
00:10:18
collection de propriétés vous pouvez
00:10:20
considérer un objet comme un conteneur
00:10:22
de données et on a depuis es-6 symbole
00:10:24
ça représente une valeur unique qui
00:10:26
n'est pas égale à tout autre valeur
00:10:28
autre question très classique que vous
00:10:29
allez potentiellement avoir c'est
00:10:30
comment est-ce qu'on peut définir une
00:10:32
variable en Javascript il existe trois
00:10:34
façons de le faire donc vous connaissez
00:10:35
sûrement va c'est le moyen le plus
00:10:37
ancien de déclarer une variable les
00:10:39
déclarations de variables avec Var sont
00:10:41
traitées avant l'exécution du code je
00:10:43
vous en ai parlé tout à l'heure c'est le
00:10:44
phénomène de hosting ça signifie qu'on
00:10:46
peut utiliser la variable avant de
00:10:48
l'avoir déclables autre façon de
00:10:49
déclarer vous avez constat qui permet de
00:10:52
déclarer donc une variable dont la
00:10:53
valeur ne peut pas être réassignée c'est
00:10:55
idéal pour des constantes ou pour des
00:10:58
valeurs que vous voulez protéger des
00:10:59
changements attention parce que
00:11:00
contrairement à ce qu'on pourrait penser
00:11:01
un objet déclaré avec const peut quand
00:11:04
même voir ses propriétés modifiées qui
00:11:06
est constant c'est la liaison entre le
00:11:07
nom de la variable et sa valeur on peut
00:11:09
également déclarer une variable avec
00:11:10
l'aide l'aide c'est plus récent et ça
00:11:13
permet de déclarer des variables avec
00:11:14
une portée de bloc par contre attention
00:11:16
contrairement à Var une variable
00:11:18
déclarée avec l'aide ne peut être lu ou
00:11:20
écrite avant sa déclaration
00:11:22
l'utilisation de l'aide ça indique
00:11:24
également que la variable peut être par
00:11:26
exemple dans une boucle vous verrez de
00:11:28
manière générale quand même beaucoup
00:11:30
plus de foi net ou poste que va
00:11:32
aujourd'hui autre question quelle est la
00:11:34
différence entre les opérateurs double
00:11:36
égal et triplégales la principale
00:11:38
différence ça réside surtout dans la
00:11:40
manière dont il compare deux valeurs
00:11:42
pour faire simple le double égal vous
00:11:44
pouvez le voir comme une égalité et le
00:11:46
triple égal faut le voir plutôt comme
00:11:48
une identité ou égalité stricte pour le
00:11:50
double égal il compare deux valeurs
00:11:52
après avoir effectué une conversion de
00:11:53
type si nécessaire le triple légal donc
00:11:56
l'opérateur d'égalité stricte il va
00:11:58
comparer à la fois la valeur et le type
00:12:00
des deux variables donc si le type des
00:12:02
deux variables est différent ça va
00:12:03
retourner fausse donc ce qu'on peut dire
00:12:05
c'est qu'en conséquence de manière
00:12:06
générale le triple égal est préféré car
00:12:08
forcément ça donne des résultats plus
00:12:10
prévisibles et ça évite les erreurs
00:12:12
liées potentiellement la conversion de
00:12:13
type j'espère que toutes ces questions
00:12:15
vous aidera dans votre processus
00:12:16
d'entretien donc je vous conseille ce
00:12:18
bouquin qui est vraiment super vous
00:12:20
allez construire des petites
00:12:21
applications des jeux ça vous permettra
00:12:23
en fait de passer vraiment de si vous
00:12:25
êtes débutant à un niveau assez avancé
00:12:28
en génocide vous connaîtrez tous les
00:12:30
concepts nécessaires et ce bouquin est
00:12:31
peut-être un peu moins sec que certains
00:12:33
bouquins tels que vous pouvez trouver
00:12:35
sur Amazon je vous dis à la prochaine
00:12:37
pour une autre vidéo
00:12:38
[Musique]