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

- Silverlight 3 : Communication et multicast par Kévin Gosse le il y a 8 heures et 23 minutes

- [Perso] Découvertes estivales : Linux (Part I) par Le blog de FremyCompany le il y a 11 heures et 5 minutes

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le 07-04-2009, 00:50

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le 07-03-2009, 23:36

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15