Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

JavaScript : un langage incompris - Appel de fonctions
Je viens de finir d'écrire le 7ème chapitre de ma série : JavaScript : un langage incompris
 
J'ai nommé ce chapitre : "Appel de fonctions". J'essaye de couvrir tout ce qui est en rapport avec les fonctions, vous y (re)découvrirez comment tester la présence ou non d'une fonction, récuperer les arguments d'une fonction, le type Function (vivi je parle bien de type et d'instance du type Function ;)), les trés interessantes méthode apply et call, et enfin on terminera par la réflection avec JavaScript :)
 
voir l'article au format PDF : JavaScript : un langage incompris - Appel de fonctions (document pdf)
 
Je pense que c'est le chapitre le plus compliqué à comprendre. J'ai essayé de rendre les exemples le plus explicite possible, si vous avez des suggestions d'éclaircissement sur certains points n'hésitez pas ;-)
 
Pour bien comprendre ce chapitre, il est nécessaire de bien avoir compris les autres chapitres : 
 
I - Introduction
II - Création d'objets
III - Extension de classe
IV - Méthode static et d'instance
V - Namespace / JSON
VI - Evenements
VII- Appel de fonctions
Posted: samedi 6 mai 2006 18:28 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Mauricio Diaz a dit :

Salut,

Les articles ont l'air intéressants. Mais il y a un problème avec certains liens, par contre: ceux des parties III, IV et VII.

# mai 6, 2006 19:35

cyril a dit :

Merci c'est corrigé :)
# mai 6, 2006 19:49

Jean-Marc Paratte a dit :

Bonjour,

Je découvre votre article et n'ai pas lu les précédents. Peut-être que le commentaire que j'apporte a déjà été précisé dans un précédent chapitre.

En page 2, vous donnez cet exemple:

var mafunction = function(fnc, param){
param = param || 'coucou';
fnc(param);
}
mafunction(alert); // affichera 'coucou'
mafunction(alert, 'bonjour'); // affichera 'bonjour'

Précédemment en page 1, vous donnez l'exemple:

if (val)
alert('OK');

et le commentaire:

Le messagebox OK ne sera affiché dans tous les cas sauf si val vaut : false, 0, null, ‘’ (la
chaine vide) , undefined.

JavaScript et un langage incompris, c'est exact, et vos exemples en témoignent.
Je m'explique.
Il est nécessaire de bien comprendre cet exemple 'if (val) ...' lorsque '(val)' est analysé comme résultat 'false'. Il y a un piège car le paramètre 'param' pour lequel vous attendez visiblement une chaîne de caractères est piégé. Le résultat affiché ne sera pas identique dans un cas qui pourtant devrait l'être: la chaîne de caractères littéral '' et l'object String contenant une chaîne de caractères '' (new String('')).
Dans le 1er cas,
mafunction(alert, '');
affichera 'coucou' puisque la chaîne de caractères littéral est vide, dans le second,
mafunction(alert, new String(''));
affichera '' puisque tout object retourne un résultat 'true' (sauf 'null' qui est analysé comme 'false').
En remplacement de:
param = param || 'coucou';
une écriture plus correcte et plus sûre serait:
param = param != null ? param ? 'coucou';

Il est est de même avec le test de la valeur numérique lorsque la valeur '0' est significative et qu'elle est rejetée avec une programmation trop simplifiée. Une démonstration identique peut être apportée sur la confusion de la valeur littérale '0' et le l'object 'new Number(0)' (ou new Object(0)).

Vos exemples devrait inciter à prendre conscience de cette dimmension 'perverse' de JavaScript.
# mai 6, 2006 21:18

cyril a dit :

Bonsoir,

effectivement tes remarques sont trés interessantes. Je ne suis pas rentré dans ce genre de "détails" car on utilise trés rarement les constructeurs de Number et String.

On voit plus de détails sur ce que tu racontes ici au slide 26 http://www.flickr.com/photos/simon/sets/72057594077197868/show/ :)
# mai 6, 2006 22:41

Cyril 's Blog a dit :

En patientant pendant l’installation d’un serveur SQL 2005 sur Vista, j’ai fait le  « Hands on Labs...
# juin 4, 2006 20:25
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le il y a 8 heures et 47 minutes

- Perspective 3.0 pour Silverlight 5.0 par Perspective le il y a 10 heures et 8 minutes

- TechDays Paris 2012 : Top 10 des Best Practices pour SQL Server par Blog Technique de Romelard Fabrice le il y a 15 heures et 45 minutes

- TechDays Paris 2012 : Kinect + Office 365 un bon geste pour votre SI par Blog Technique de Romelard Fabrice le il y a 16 heures et 7 minutes

- TechDays Paris 2012 : Pleinière du premier jour par Blog Technique de Romelard Fabrice le il y a 16 heures et 23 minutes

- [SharePoint 2010] Erreur d’analyse de contenu “L’élément SharePoint en cours d’analyse a renvoyé une erreur lors de la demande de données auprès du se... par Julien Chable le il y a 20 heures et 56 minutes

- [TechDays2012] Oui j’y serai! par Blog de Jérémy Jeanson le 02-06-2012, 22:13

- TFS Integration Tools – Suivi des synchronisations avec Reporting Services par Vivien Fabing le 02-05-2012, 17:46

- CSS Content State Selectors (Personnal Draft) par Le blog de FremyCompany le 02-04-2012, 15:38

- MBA : Pourquoi faire et comment le choisir ? par Blog Technique de Romelard Fabrice le 02-03-2012, 14:22