SlideShare a Scribd company logo
1 of 23
Download to read offline
Javascript : Fonctions for noobs
1. Javascript & fonctions
1.1 Créer une fonction
Définir & exécuter une fonction (1)
function sayHello(){
alert('hello');
}
!
sayHello();
// hello
Définir & exécuter une fonction (2)
sayHello();
!
function sayHello(){
alert('hello');
}
// hello
Return & side effects
function sayHello(){
alert('hello');
}
!
sayHello();
!
function sayHello(name){
return 'Hello '+name;
}
!
alert(sayHello('toto'));
// hello
// Hello toto
1.2 Paramètres
Fonction & paramètres
function sayHello(name){
return 'Hello '+name;
}
!
alert(sayHello());
!
alert(sayHello('Brandon', 'Jason', 'Kevin'));
// Hello undefined
// Hello Brandon
Paramètres par default
function sayHello(name){
name = typeof name === 'undefined' ? 'Jason' : name;
return 'Hello '+name;
}
!
alert(sayHello('Kevin'));
alert(sayHello());
// Hello Kevin
// Hello Jason
1.3 The call stack
The call stack (1)
function sayHello(name){
return 'Hello '+name;
}
!
alert(sayHello('Jason'));
!
alert(sayHello('Kevin'));
!
alert(sayHello('Brandon'));
// Hello Jason
// Hello Kevin
// Hello Brandon
The call stack (2)
function poule() {
return oeuf();
}
function oeuf() {
return poule();
}
console.log(poule() + " était là avant.");
// RangeError: Maximum call stack size exceeded
2. fonctions & scope
Portée des variables (1)
var helloWorld = 'Hello World!';
function sayHello(){
alert(helloWorld);
}
!
sayHello()
alert(helloWorld);
function sayHello(){
var helloWorld = 'Hello World!';
alert(helloWorld);
}
!
sayHello();
alert(helloWorld);
// Hello World!
// Hello World!
// Hello World!
// undefined
Portée des variables (2)
var whoAmI = "Jason";
!
var f1 = function() {
var whoAmI = "Kevin";
};
f1();
console.log(whoAmI);
!
var f2 = function() {
whoAmI = "Brandon";
};
f2();
console.log(whoAmI);
// Jason
// Brandon
3. Recursion
Exemple de recursion
function inception(timerate){
timerate = timerate / 12;
console.log('Level ' + level);
console.log("1 second is %d second", 1/timerate);
if(level == 4){
console.log("The Limbo");
return;
}
level++;
inception(timerate);
}
!
var level = 1, timerate = 1;
inception(timerate);
4. Mise en pratique
Exercice 1 : Evil genius (1)
Vous êtes chargé par le Docteur Denfer de créer une page
web permettant de simuler la propagation d’une maladie
mortelle à la population française.
L’utilisateur saisie un taux de mortalité et un coefficient de
viralité. Le programme calcule ensuite le nombre d’itérations
nécessaires pour que toute la population soit décimée.
29 instructions maximum
Exercice 1 : Evil genius (2)
31 instructions maximum
Quelques contraintes : 	

- Si les données saisies ne permettent pas d’exterminer la
population française en moins de 36 itérations, le programme
s’arrête.	

- L’épidémie commence avec un patient 0.	

- La population française est de 66 000 000 habitants.	

- La simulation doit utiliser la récursivité.
Exercice 2 : Jump
Créer une page web permettant de jouer à un jeu consistant
à choisir les coordonnées d’un saut en parachute.
Le jeu génère des données aléatoires concernant la direction du
vent (gauche ou droite), la vitesse du vent (1 à 10) et la hauteur
du saut (10 à 110). Le joueur choisie ensuite à quelle abscisse il
souhaite sauter (1 à 100).
50 instructions maximum
Le jeux simule la descente et affiche chaque itération dans la
console de manière « graphique ».
Si le joueur sort de la zone cible (0, 100) le jeux s’arrête.	

Si grace à la saisie du joueur le parachutiste attend la zone cible
il a gagné.
Merci pour votre attention.
Bibliographie
Eloquent JavaScript - Marijn Haverbeke
http://eloquentjavascript.net
Dynamisez vos sites web avec Javascript ! - Johann Pardanaud & Sébastien de la Marck
http://fr.openclassrooms.com/informatique/cours/dynamisez-vos-sites-web-avec-javascript
JavaScript Fundamentals - Jeremy McPeak
http://code.tutsplus.com/courses/javascript-fundamentals
Guide JavaScript - teoli, BenoitL, delislejm, Ame_Nomade, SphinxKnight
https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide

More Related Content

Viewers also liked

Javascript #5.1 : tp1 zombies!
Javascript #5.1 : tp1 zombies!Javascript #5.1 : tp1 zombies!
Javascript #5.1 : tp1 zombies!Jean Michel
 
Une introduction à Javascript
Une introduction à JavascriptUne introduction à Javascript
Une introduction à JavascriptJean Michel
 
Javascript #2 : valeurs, types & opérateurs
Javascript #2 : valeurs, types & opérateursJavascript #2 : valeurs, types & opérateurs
Javascript #2 : valeurs, types & opérateursJean Michel
 
Wordpress #3 : content strategie
Wordpress #3 : content strategieWordpress #3 : content strategie
Wordpress #3 : content strategieJean Michel
 
Wordpress #1 : introduction
Wordpress #1 : introductionWordpress #1 : introduction
Wordpress #1 : introductionJean Michel
 
WebApp #4 : Consuming REST APIs
WebApp #4 : Consuming REST APIs WebApp #4 : Consuming REST APIs
WebApp #4 : Consuming REST APIs Jean Michel
 
PHP #4 : sessions & cookies
PHP #4 : sessions & cookiesPHP #4 : sessions & cookies
PHP #4 : sessions & cookiesJean Michel
 
Startup & entrepreneuriat #2.1: disrupt me
Startup & entrepreneuriat #2.1: disrupt meStartup & entrepreneuriat #2.1: disrupt me
Startup & entrepreneuriat #2.1: disrupt meJean Michel
 
Architecture logicielle #2 : TP timezone
Architecture logicielle #2 : TP timezoneArchitecture logicielle #2 : TP timezone
Architecture logicielle #2 : TP timezoneJean Michel
 
#3 html in the real world
#3 html in the real world#3 html in the real world
#3 html in the real worldJean Michel
 
Architecture logicielle #4 : mvc
Architecture logicielle #4 : mvcArchitecture logicielle #4 : mvc
Architecture logicielle #4 : mvcJean Michel
 
Javascript #7 : manipuler le dom
Javascript #7 : manipuler le domJavascript #7 : manipuler le dom
Javascript #7 : manipuler le domJean Michel
 
Javascript #6 : objets et tableaux
Javascript #6 : objets et tableauxJavascript #6 : objets et tableaux
Javascript #6 : objets et tableauxJean Michel
 
Javascript #11: Space invader
Javascript #11: Space invaderJavascript #11: Space invader
Javascript #11: Space invaderJean Michel
 
PHP #3 : tableaux & formulaires
PHP #3 : tableaux & formulairesPHP #3 : tableaux & formulaires
PHP #3 : tableaux & formulairesJean Michel
 
Javascript #3 : boucles & conditions
Javascript #3 : boucles & conditionsJavascript #3 : boucles & conditions
Javascript #3 : boucles & conditionsJean Michel
 
Architecture logicielle #3 : object oriented design
Architecture logicielle #3 : object oriented designArchitecture logicielle #3 : object oriented design
Architecture logicielle #3 : object oriented designJean Michel
 
#1 entreprendre au xxiè siècle
#1 entreprendre au xxiè siècle#1 entreprendre au xxiè siècle
#1 entreprendre au xxiè siècleJean Michel
 

Viewers also liked (20)

Javascript #5.1 : tp1 zombies!
Javascript #5.1 : tp1 zombies!Javascript #5.1 : tp1 zombies!
Javascript #5.1 : tp1 zombies!
 
Projet timezone
Projet timezoneProjet timezone
Projet timezone
 
Une introduction à Javascript
Une introduction à JavascriptUne introduction à Javascript
Une introduction à Javascript
 
Javascript #2 : valeurs, types & opérateurs
Javascript #2 : valeurs, types & opérateursJavascript #2 : valeurs, types & opérateurs
Javascript #2 : valeurs, types & opérateurs
 
Wordpress #3 : content strategie
Wordpress #3 : content strategieWordpress #3 : content strategie
Wordpress #3 : content strategie
 
Wordpress #1 : introduction
Wordpress #1 : introductionWordpress #1 : introduction
Wordpress #1 : introduction
 
WebApp #4 : Consuming REST APIs
WebApp #4 : Consuming REST APIs WebApp #4 : Consuming REST APIs
WebApp #4 : Consuming REST APIs
 
PHP #4 : sessions & cookies
PHP #4 : sessions & cookiesPHP #4 : sessions & cookies
PHP #4 : sessions & cookies
 
Startup & entrepreneuriat #2.1: disrupt me
Startup & entrepreneuriat #2.1: disrupt meStartup & entrepreneuriat #2.1: disrupt me
Startup & entrepreneuriat #2.1: disrupt me
 
Architecture logicielle #2 : TP timezone
Architecture logicielle #2 : TP timezoneArchitecture logicielle #2 : TP timezone
Architecture logicielle #2 : TP timezone
 
#3 html in the real world
#3 html in the real world#3 html in the real world
#3 html in the real world
 
Architecture logicielle #4 : mvc
Architecture logicielle #4 : mvcArchitecture logicielle #4 : mvc
Architecture logicielle #4 : mvc
 
Javascript #7 : manipuler le dom
Javascript #7 : manipuler le domJavascript #7 : manipuler le dom
Javascript #7 : manipuler le dom
 
Javascript #6 : objets et tableaux
Javascript #6 : objets et tableauxJavascript #6 : objets et tableaux
Javascript #6 : objets et tableaux
 
Javascript #11: Space invader
Javascript #11: Space invaderJavascript #11: Space invader
Javascript #11: Space invader
 
PHP #3 : tableaux & formulaires
PHP #3 : tableaux & formulairesPHP #3 : tableaux & formulaires
PHP #3 : tableaux & formulaires
 
PHP #6 : mysql
PHP #6 : mysqlPHP #6 : mysql
PHP #6 : mysql
 
Javascript #3 : boucles & conditions
Javascript #3 : boucles & conditionsJavascript #3 : boucles & conditions
Javascript #3 : boucles & conditions
 
Architecture logicielle #3 : object oriented design
Architecture logicielle #3 : object oriented designArchitecture logicielle #3 : object oriented design
Architecture logicielle #3 : object oriented design
 
#1 entreprendre au xxiè siècle
#1 entreprendre au xxiè siècle#1 entreprendre au xxiè siècle
#1 entreprendre au xxiè siècle
 

Similar to Javascript #4.1 : fonctions for noobs

jeu de serpent (Snake)
jeu de serpent (Snake)jeu de serpent (Snake)
jeu de serpent (Snake)chamhi
 
Fondamentaux portée - contexte - function ms tech days
Fondamentaux   portée - contexte - function ms tech daysFondamentaux   portée - contexte - function ms tech days
Fondamentaux portée - contexte - function ms tech daysJean-Pierre Vincent
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptMicrosoft
 
Javascript #4.2 : fonctions for pgm
Javascript #4.2 : fonctions for pgmJavascript #4.2 : fonctions for pgm
Javascript #4.2 : fonctions for pgmJean Michel
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - heroYann Caron
 

Similar to Javascript #4.1 : fonctions for noobs (11)

Compte rendu jess
Compte rendu jessCompte rendu jess
Compte rendu jess
 
Cours javascript v1
Cours javascript v1Cours javascript v1
Cours javascript v1
 
jeu de serpent (Snake)
jeu de serpent (Snake)jeu de serpent (Snake)
jeu de serpent (Snake)
 
Fondamentaux portée - contexte - function ms tech days
Fondamentaux   portée - contexte - function ms tech daysFondamentaux   portée - contexte - function ms tech days
Fondamentaux portée - contexte - function ms tech days
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Le langage C
Le langage CLe langage C
Le langage C
 
Javascript #4.2 : fonctions for pgm
Javascript #4.2 : fonctions for pgmJavascript #4.2 : fonctions for pgm
Javascript #4.2 : fonctions for pgm
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
Tp-jquery
Tp-jqueryTp-jquery
Tp-jquery
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - hero
 

More from Jean Michel

Startup #7 : how to get customers
Startup #7 : how to get customersStartup #7 : how to get customers
Startup #7 : how to get customersJean Michel
 
HTML & CSS #10 : Bootstrap
HTML & CSS #10 : BootstrapHTML & CSS #10 : Bootstrap
HTML & CSS #10 : BootstrapJean Michel
 
Javascript #10 : canvas
Javascript #10 : canvasJavascript #10 : canvas
Javascript #10 : canvasJean Michel
 
Architecture logicielle #1 : introduction
Architecture logicielle #1 : introductionArchitecture logicielle #1 : introduction
Architecture logicielle #1 : introductionJean Michel
 
Architecture logicielle #5 : hipsto framework
Architecture logicielle #5 : hipsto frameworkArchitecture logicielle #5 : hipsto framework
Architecture logicielle #5 : hipsto frameworkJean Michel
 
PHP #7 : guess who?
PHP #7 : guess who?PHP #7 : guess who?
PHP #7 : guess who?Jean Michel
 
PHP & MYSQL #5 : fonctions
PHP & MYSQL #5 :  fonctionsPHP & MYSQL #5 :  fonctions
PHP & MYSQL #5 : fonctionsJean Michel
 
PHP #2 : variables, conditions & boucles
PHP #2 : variables, conditions & boucles PHP #2 : variables, conditions & boucles
PHP #2 : variables, conditions & boucles Jean Michel
 
PHP #1 : introduction
PHP #1 : introductionPHP #1 : introduction
PHP #1 : introductionJean Michel
 
Startup #5 : pitch
Startup #5 : pitchStartup #5 : pitch
Startup #5 : pitchJean Michel
 
Javascript #8 : événements
Javascript #8 : événementsJavascript #8 : événements
Javascript #8 : événementsJean Michel
 
WebApp #2 : responsive design
WebApp #2 : responsive designWebApp #2 : responsive design
WebApp #2 : responsive designJean Michel
 
Gestion de projet #4 : spécification
Gestion de projet #4 : spécificationGestion de projet #4 : spécification
Gestion de projet #4 : spécificationJean Michel
 
WebApp #1 : introduction
WebApp #1 : introductionWebApp #1 : introduction
WebApp #1 : introductionJean Michel
 

More from Jean Michel (16)

Startup #7 : how to get customers
Startup #7 : how to get customersStartup #7 : how to get customers
Startup #7 : how to get customers
 
HTML & CSS #10 : Bootstrap
HTML & CSS #10 : BootstrapHTML & CSS #10 : Bootstrap
HTML & CSS #10 : Bootstrap
 
Javascript #10 : canvas
Javascript #10 : canvasJavascript #10 : canvas
Javascript #10 : canvas
 
Architecture logicielle #1 : introduction
Architecture logicielle #1 : introductionArchitecture logicielle #1 : introduction
Architecture logicielle #1 : introduction
 
Architecture logicielle #5 : hipsto framework
Architecture logicielle #5 : hipsto frameworkArchitecture logicielle #5 : hipsto framework
Architecture logicielle #5 : hipsto framework
 
PHP #7 : guess who?
PHP #7 : guess who?PHP #7 : guess who?
PHP #7 : guess who?
 
PHP & MYSQL #5 : fonctions
PHP & MYSQL #5 :  fonctionsPHP & MYSQL #5 :  fonctions
PHP & MYSQL #5 : fonctions
 
PHP #2 : variables, conditions & boucles
PHP #2 : variables, conditions & boucles PHP #2 : variables, conditions & boucles
PHP #2 : variables, conditions & boucles
 
PHP #1 : introduction
PHP #1 : introductionPHP #1 : introduction
PHP #1 : introduction
 
Startup #5 : pitch
Startup #5 : pitchStartup #5 : pitch
Startup #5 : pitch
 
Javascript #8 : événements
Javascript #8 : événementsJavascript #8 : événements
Javascript #8 : événements
 
WebApp #3 : API
WebApp #3 : APIWebApp #3 : API
WebApp #3 : API
 
WebApp #2 : responsive design
WebApp #2 : responsive designWebApp #2 : responsive design
WebApp #2 : responsive design
 
Gestion de projet #4 : spécification
Gestion de projet #4 : spécificationGestion de projet #4 : spécification
Gestion de projet #4 : spécification
 
Projet timezone
Projet timezoneProjet timezone
Projet timezone
 
WebApp #1 : introduction
WebApp #1 : introductionWebApp #1 : introduction
WebApp #1 : introduction
 

Javascript #4.1 : fonctions for noobs

  • 2. 1. Javascript & fonctions
  • 3. 1.1 Créer une fonction
  • 4. Définir & exécuter une fonction (1) function sayHello(){ alert('hello'); } ! sayHello(); // hello
  • 5. Définir & exécuter une fonction (2) sayHello(); ! function sayHello(){ alert('hello'); } // hello
  • 6. Return & side effects function sayHello(){ alert('hello'); } ! sayHello(); ! function sayHello(name){ return 'Hello '+name; } ! alert(sayHello('toto')); // hello // Hello toto
  • 8. Fonction & paramètres function sayHello(name){ return 'Hello '+name; } ! alert(sayHello()); ! alert(sayHello('Brandon', 'Jason', 'Kevin')); // Hello undefined // Hello Brandon
  • 9. Paramètres par default function sayHello(name){ name = typeof name === 'undefined' ? 'Jason' : name; return 'Hello '+name; } ! alert(sayHello('Kevin')); alert(sayHello()); // Hello Kevin // Hello Jason
  • 10. 1.3 The call stack
  • 11. The call stack (1) function sayHello(name){ return 'Hello '+name; } ! alert(sayHello('Jason')); ! alert(sayHello('Kevin')); ! alert(sayHello('Brandon')); // Hello Jason // Hello Kevin // Hello Brandon
  • 12. The call stack (2) function poule() { return oeuf(); } function oeuf() { return poule(); } console.log(poule() + " était là avant."); // RangeError: Maximum call stack size exceeded
  • 13. 2. fonctions & scope
  • 14. Portée des variables (1) var helloWorld = 'Hello World!'; function sayHello(){ alert(helloWorld); } ! sayHello() alert(helloWorld); function sayHello(){ var helloWorld = 'Hello World!'; alert(helloWorld); } ! sayHello(); alert(helloWorld); // Hello World! // Hello World! // Hello World! // undefined
  • 15. Portée des variables (2) var whoAmI = "Jason"; ! var f1 = function() { var whoAmI = "Kevin"; }; f1(); console.log(whoAmI); ! var f2 = function() { whoAmI = "Brandon"; }; f2(); console.log(whoAmI); // Jason // Brandon
  • 17. Exemple de recursion function inception(timerate){ timerate = timerate / 12; console.log('Level ' + level); console.log("1 second is %d second", 1/timerate); if(level == 4){ console.log("The Limbo"); return; } level++; inception(timerate); } ! var level = 1, timerate = 1; inception(timerate);
  • 18. 4. Mise en pratique
  • 19. Exercice 1 : Evil genius (1) Vous êtes chargé par le Docteur Denfer de créer une page web permettant de simuler la propagation d’une maladie mortelle à la population française. L’utilisateur saisie un taux de mortalité et un coefficient de viralité. Le programme calcule ensuite le nombre d’itérations nécessaires pour que toute la population soit décimée. 29 instructions maximum
  • 20. Exercice 1 : Evil genius (2) 31 instructions maximum Quelques contraintes : - Si les données saisies ne permettent pas d’exterminer la population française en moins de 36 itérations, le programme s’arrête. - L’épidémie commence avec un patient 0. - La population française est de 66 000 000 habitants. - La simulation doit utiliser la récursivité.
  • 21. Exercice 2 : Jump Créer une page web permettant de jouer à un jeu consistant à choisir les coordonnées d’un saut en parachute. Le jeu génère des données aléatoires concernant la direction du vent (gauche ou droite), la vitesse du vent (1 à 10) et la hauteur du saut (10 à 110). Le joueur choisie ensuite à quelle abscisse il souhaite sauter (1 à 100). 50 instructions maximum Le jeux simule la descente et affiche chaque itération dans la console de manière « graphique ». Si le joueur sort de la zone cible (0, 100) le jeux s’arrête. Si grace à la saisie du joueur le parachutiste attend la zone cible il a gagné.
  • 22. Merci pour votre attention.
  • 23. Bibliographie Eloquent JavaScript - Marijn Haverbeke http://eloquentjavascript.net Dynamisez vos sites web avec Javascript ! - Johann Pardanaud & Sébastien de la Marck http://fr.openclassrooms.com/informatique/cours/dynamisez-vos-sites-web-avec-javascript JavaScript Fundamentals - Jeremy McPeak http://code.tutsplus.com/courses/javascript-fundamentals Guide JavaScript - teoli, BenoitL, delislejm, Ame_Nomade, SphinxKnight https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide