javascript tome iii - Qqs caractéristiques du mode strict
Transcription
javascript tome iii - Qqs caractéristiques du mode strict
Qqs caractéristiques du mode strict J AVA S C R I P T V O L . I I I Po u r D é b u t e r J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga +243 - 851278216 - 899508675 - 991239212 - 902263541 - 813572818 La dernière révision de ce texte est disponible sur CD. I. Portée du mode strict : 1. Le mode strict commence à l’endroit de sa déclaration sauf quand il s’agit de paramètres ; 2. Il ne peut être utilisé dans une fonction ayant un paramètre par défaut (=initialisé). 3. Quand déclaré dans une fonction il a une portée fonction. 4. Quand déclaré en dehors d’une fonction, il a une portée fichier, c’est-à-dire seulement dans le fichier dans lequel il est déclaré, pas dans les autres fichiers inclus. La portée du mode strict se limite à celle de l’élément SCRIPT ou de la fonction dans lesquels ce mode a été activé, et donc aussi JAMAIS à ou d’un fichier externe. <script type="text/javascript"> "use strict"; ///////// nondecl=45; // ReferenceError: // assignment to undeclared variable nondecl </script> <script type="text/javascript"> non_decl=50; console.dir(non_decl) // 50 // "use strict" ne s’est pas étendu à cet élément. function fstrict(){ "use strict"; ///////// nondecl=54; // ReferenceError: // assignment to undeclared variable nondecl } fstrict(); function freguliere(){ non_decl=500; console.dir(non_decl) // 500 // "use strict" ne s’étend à cette fonction. } freguliere(); </script> Si donc on veut que le mode strict s’applique à tout le fichier, utilisez un seul élément SCRIPT dans lequel on le définit : II. Quelques caractéristiques du mode strict : 1. Convertit les erreurs silencieuses de JavaScript en erreurs bruyantes, levant une exception. 2. Corrige les erreurs qui rendent difficiles les optimisations, le code s’exécute ainsi plus rapidement. 3. Interdit les mot-clés susceptibles d'être définis dans les futures versions de ECMAScript (implements, interface, let, package, private, protected, public, static, yield). 4. Le mode strict commence à l’endroit de sa déclaration sauf quand il s’agit de paramètres ; 5. Il ne peut être utilisé dans une fonction ayant un paramètre par défaut (=initialisé). J.D.B. DIASOLUKA Nz. Luyalu 2/8 JavaScript Tome-III 6. Quand déclaré dans une fonction il a une portée fonction. 7. Quand déclaré en dehors d’une fonction, il a une portée fichier, c’est-àdire seulement dans le fichier dans lequel il est déclaré, pas dans les autres fichiers inclus. En JS standard, une variable n’a pas besoin d’être préalablement déclarée avant sa première utilisation. et elle peut être déclarée/définie et même redéclarée / redéfinie même après des ou toutes les instructions et n’a pas de typage fixe (une variable peut recevoir une donnée d’un autre type que celui de sa définition, le type de la variable est défini seulement au moment de l’affectation = typage faible et dynamique, pratique pour les variables temporaires). Toute variable temporaire strictement locale à une fonction doit être déclarée var. En mode strict TOUTE variable DOIT être déclarée avant ou après sa première utilisation, les variable globales doivent l’être déclarées explicitement. On ne peut pas non plus : Modifier les variables globales en lecture seule (read-only) comme le NaN, undefined, Infinity, ou une propriété en lecture seule... 1. Affecter à une propriété qui n’a qu’une méthode get 2. Affecter une nouvelle propriété à un objet non extensible comme un object littéral. 3. Supprimer une propriété non-supprimable comme le prototype. 4. Redéfinir les propriétés nommées dans un object literal. 5. Utiliser deux fois un même nom de paramètre. 6. Le mode octal ne s’écrit plus 0nb (zéro nb) mais 0onb (zéro o_minuscule_ou_majuscule nb) 7. Définir des propriétés sur des « valeurs primitives » (voir plus loin) : J.D.B. DIASOLUKA Nz. Luyalu 3/8 JavaScript Tome-III Undefined, Null, Boolean, Number, String, et Symbol. Tolérance et intolérance de quelques erreurs en JavaScript standard et en mode strict. Les erreurs suivantes sont tolérées en JS standard, en donnant un faux résultat. Elles ne sont heureusement pas tolérées en mode strict. <script type="text/javascript"> false.true = true; (2018).propriete = "prop"; "une chaîne".de = "chaine"; console.log(false.true) console.log((2018).propriete) console.log("une chaîne".de) </script> //Undefined //Undefined //Undefined 8. Utiliser arguments comme nom ID de variable <script type="text/javascript"> var arguments = Math.PI; console.log(arguments); // 3.141592653589793 </script> 9. Interdiction du mot-clé with : <script type="text/javascript"> let x = {a:2018 , m:"Janvier"} with(x) console.log(a) , console.log(m); // 2018 Janvier </script> En mode « "use strict"; » <script type="text/javascript"> "use strict"; let x = {a:2018 , m:"Janvier"} with(x) console.log(a) , console.log(m); // SyntaxError: strict mode code may not contain </script> J.D.B. DIASOLUKA Nz. Luyalu 4/8 JavaScript Tome-III Kinshasa, le 4 avril 2019 (10:42:56 PM). Mots-clés : portée, mode, mode strict, mode variables globales, standard, mode sloppy, fichier, ECMAScript, implements, interface, let, package, private, arguments, protected, public, static, yield, javascript, ecmascript J.D.B. DIASOLUKA Nz. Luyalu 5/8 JavaScript Tome-III DIASOLUKA Nz. Luyalu Docteur en Médecine, Chirurgie & Accouchements (1977), CNOM : 0866 - Spécialiste en ophtalmologie (1980) Études humanités : Scientifique - Mathématiques & Physique. Informaticien-amateur, Programmeur et WebMaster. Chercheur indépendant, autonome et autofinancé, bénévole, sans aucun conflit d’intérêt ou liens d'intérêts ou contrainte promotionnelle avec qui qu’il soit ou quelqu’organisme ou institution / organisation que ce soit, étatique, paraétatique ou privé, industriel ou commercial en relation avec le sujet présenté. +243 - 851278216 - 899508675 - 991239212 - 902263541 - 813572818 [email protected] Autre Lecture : https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-de-LaCreation D’autres publications pouvant aussi intéresser : • https://www.scribd.com/document/377036251/LeDosage-Des-Medicaments-en-Cac-Cas • https://www.scribd.com/document/377035454/LeHasard-Des-Thermometres-Non-contact-a-Infrarouge • https://www.scribd.com/document/376222482/PetiteJ.D.B. DIASOLUKA Nz. Luyalu 6/8 JavaScript Tome-III Introduction-Aux-Fonctions-JavaScript • https://www.scribd.com/document/376221919/La-Foien-Jesus-Christ-Pour-Quoi-Faire • https://www.scribd.com/document/375689778/Lacuitevisuelle-angulaire • https://www.scribd.com/document/375349851/Lavariable-This • https://www.scribd.com/document/375024162/FonctionsImbriquees-en-JS • https://www.scribd.com/document/374789297/FormatInterne-Des-Objets-JavaScript • https://www.scribd.com/document/374788758/Iterationsen-JavaScript • https://www.scribd.com/document/374738470/Le-PlusGrand-Secret-de-La-Creation • https://www.scribd.com/document/374597969/NouvelleFormule-d-IMC-indice-de-doduite-Selon-Dr-Diasoluka • https://www.scribd.com/document/373847209/PropertyDescriptors • https://www.scribd.com/document/373833282/l-ObjetGlobal-Window • https://www.scribd.com/document/372665249/JavascriptTome-II • https://www.scribd.com/document/355291488/motiliteoculaire-2 • https://www.scribd.com/document/355291239/motiliteoculaire-I • https://www.scribd.com/document/355290248/Script-dAnalyses-Des-Reflexes-Pupillomoteurs • https://www.scribd.com/document/321168468/Renseigne ments-Id-et-Anthropometriques • J.D.B. DIASOLUKA Nz. Luyalu 7/8 JavaScript Tome-III https://www.scribd.com/document/320856721/Emission31-Jul-2016 • https://www.scribd.com/document/318182982/Complicati on-Visuelle-du-Traitement-de-La-Malaria • https://www.scribd.com/document/318180637/RapportEntre-Oxymetrie-Et-Type-Respiration • https://www.scribd.com/document/315746265/Classificati on-Des-Medicaments • https://www.scribd.com/document/315745909/Incongrue nces-Heresies-et-Heterodoxies-de-la-Notion-de-Laboratoire • https://www.scribd.com/document/315745725/RapportEntre-Oxymetrie-Et-Type-Respiration J.D.B. DIASOLUKA Nz. Luyalu 8/8 JavaScript Tome-III