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.

    Consultant freelance, 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

- Comment mapper une vue SQL sur une collection de complex type? par Matthieu MEZIL le il y a 21 heures et 32 minutes

- SQL Server : Query Notification ou comment être notifié de modifications de données côté application (SqlDependency) par SQL Server vu par Christian Robert le 03-19-2010, 15:06

- [WF4] Un Binding Activity/ActivityDesigner qui passe mal? par Blog de Jérémy Jeanson le 03-19-2010, 13:42

- MyTIC – SharePoint 2010 : déjà un mythe Microsoft ? par Le Blog (Vert) d'Arnaud JUND le 03-19-2010, 08:54

- TechDays 2010 Genève : Retrouvez-moi pour une session sur la Haute disponibilité et le ScaleOut avec SQL Server par SQL Server vu par Christian Robert le 03-18-2010, 15:45

- [MIX10] Keynote deuxième journée – Internet Explorer 9, Html5, Visual Studio 2010, OData par Atteint de JavaScriptite Aiguë [Cyril Durand] le 03-17-2010, 19:40

- Certifications beta .NET 4 par Kévin Gosse le 03-17-2010, 19:33

- [Mix 2010] – Microsoft Translator Technology Preview V2 par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 18:53

- Lancement en Preview de Cyclone lors des TechDays 2010! par Blog de Frédéric Queudret le 03-17-2010, 16:30

- [WP7] Je ne veux pas d’un nouvel iPhone par Le blog de FremyCompany le 03-17-2010, 13:11