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