Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Publications JavaScript / AJAX
Publications JavaScript / AJAX Commentez les articles et critiques de livres publiés sur les rubriques JavaScript et AJAX
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 28/11/2011, 18h25   #1
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 789
Points : 35 789
Par défaut Trois fondamentaux de JavaScript



Jean-Pierre Vincent vous propose un nouvel article : Trois fondamentaux de JavaScript.

Au-delà de rappeler certains aspects importants de JavaScript, l'article présente des notions relativement avancées de programmation JavaScript.

Trois fondamentaux de JavaScript

à lui !
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 30/11/2011, 01h02   #2
Membre chevronné
 
Avatar de atha2
 
Homme Gabriel VIOT
Étudiant
Inscription : janvier 2007
Messages : 457
Détails du profil
Informations personnelles :
Nom : Homme Gabriel VIOT
Âge : 24
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2007
Messages : 457
Points : 664
Points : 664
Citation:
Envoyé par Jean-Pierre Vincent
Code :
1
2
3
4
5
6
7
8
function genericFunctionName() {
    for(i = 0; i < myArray.length; i++) {
        console.log(i);
    }
}
for(i = 0; i < 10; i++) {
    genericFunctionName();
}
Nous avons simplement une fonction qui parcourt un tableau fictif, puis nous appelons cette fonction 10 fois. N'exécutez surtout pas cela dans votre navigateur, car c'est une boucle infinie !
Et pourquoi pas ? Ca fait juste planter le navigateur et au moins on s'en rend compte par soit même

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
if( 1 == 1 ) {
    // l'exécution du code passe ici ...
    function action() {
        console.log('a == 1');
    }
    } else {
        // ... pourtant le compilateur se souvient de cette fonction
        function action() {
        console.log('a != 1');
    }
}
action(); // a != 1
Bizarre le principe des portées en JavaScript. Dans la plupart des langages mainstream (Java, C, C++...) une portée est définie par :
Code :
1
2
3
4
 
{
une nouvelle portée
}
En JavaScript, la seule façon de créer une nouvelle portée est donc de faire ça :
Code :
1
2
3
 
(function() { 
}())
Et donc en quelque sorte créer un objet portée (ou alors faut-il obligatoirement un appel à new pour créer un objet ?).
Code :
1
2
3
4
5
6
7
8
9
 
myClass.prototype = {
    decrement:function() {
        console.log( --this.publicVariable );
    },
    increment:function() {
        console.log( ++this.publicVariable );
    }
};
Ne peut-on pas plutôt écrire:
Code :
1
2
3
4
5
6
7
 
myClass.decrement = function() {
        console.log( --this.publicVariable );
};
myClass.increment = function() {
        console.log( ++this.publicVariable );
};
dont la syntaxe parait plus lisible ?

Merci Pour cette article très instructif sur ce qu'il faut faire et ce qu'il ne faut pas faire (et que je faisais dans mes rares développement Javascript)
atha2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 21h36   #3
Membre chevronné
 
Inscription : février 2010
Messages : 120
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 120
Points : 678
Points : 678
Citation:
Envoyé par atha2 Voir le message
Bizarre le principe des portées en JavaScript. Dans la plupart des langages mainstream (Java, C, C++...) une portée est définie par :
Code :
1
2
3
4
 
{
une nouvelle portée
}
En JavaScript, la seule façon de créer une nouvelle portée est donc de faire ça :
Code :
1
2
3
 
(function() { 
}())
Et donc en quelque sorte créer un objet portée (ou alors faut-il obligatoirement un appel à new pour créer un objet ?).
En fait, une portée, c'est
Code :
1
2
 
function() { PORTÉE }
et c'est tout. new n'y change rien, le fait que ça soit auto-exécuté non plus (les parenthèses après la définition de la fonction)
jpvincent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 13h59   #4
Membre Expert
 
Avatar de Pill_S
 
Homme Sébastien Piller
Consultant informatique
Inscription : janvier 2004
Messages : 1 618
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Piller
Âge : 28
Localisation : Suisse

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 618
Points : 1 981
Points : 1 981
Envoyer un message via MSN à Pill_S
Article très instructif

c'est typiquement le genre de briques qu'il me manquait pour comprendre correctement les codes que je rencontre fréquement. Même si je comprenais le côté fonctionnel de ce que je devais lire, ces astuces syntaxiques me faisaient mal aux yeux à chaque fois et je ne pouvais pas m'empêcher de me demander "à quoi pensait le type qui a écrit ça???? pourquoi déclarer une fonction anonyme et l'exécuter juste derrière, au lieu de faire du code inline???".

Maintenant, je sais
__________________
gg
Pill_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 14h50   #5
Membre éclairé
 
Avatar de kimjoa
 
Inscription : février 2009
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : février 2009
Messages : 318
Points : 360
Points : 360
Encore un bon article de base pour les débutants.

Un petit mot quand même sur une nouvelle fonctionnalité de javascript.
Le mot clé let permet maintenant de déclarer et limiter la porté d'une variable dans un bloc d’exécution plus classique , à savoir {}. Comme en java...

Concernant le nommage des fonctions. Outre pour le débogage, cette notation est surtout utile , est a été mise en place, pour la récursivité, en permettant de déclarer et d'implémenter le fonction d'un coup, limitant un peu le code à écrire

par exemple au lieu de faire :

Code :
1
2
3
4
5
6
 
var maFn = function(){
    if(truc)
        setTimeout(maFn , 1000);
};
setTimeout(maFn , 1000);
On peux faire

Code :
1
2
3
4
5
 
setTimeout(function maFn (){
    if(truc)
        setTimeout(maFn , 1000);
}, 1000);
kimjoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 10h09   #6
Membre chevronné
 
Inscription : février 2010
Messages : 120
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 120
Points : 678
Points : 678
@kimjoa : effectivement, vu qu'en ecmascript 5 en mode strict les choses du genre arguments.callee sera interdit, ta notation sera intéressante.
Code :
1
2
3
4
setTimeout(function maFn (){
    if(truc)
        setTimeout(maFn , 1000);
}, 1000);
Sinon aujourd'hui, sans le mode strict pour les settimeout récursifs on utilise plutôt

Code :
1
2
3
4
setTimeout(function (){
    if(truc)
        setTimeout(arguments.callee , 1000);
}, 1000);
jpvincent est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h13.


 
 
 
 
Partenaires

Hébergement Web