Cet article vous apporte des connaissances pertinentes sur JavaScript, qui introduit principalement les problèmes liés au mode strict est facile à comprendre. Il s'agit d'un mode JavaScript restrictif, qui fait que le code s'éloigne implicitement du " "Mode paresseux", jetons un coup d'œil. j'espère que cela sera utile à tout le monde.
[Recommandations associées : didacticiel vidéo javascript, front-end Web]
Dans le standard ECMAScript5, JavaScript a proposé le concept de mode strict :
Le mode strict est facile à comprendre, c'est un mode JavaScript restrictif, qui fait implicitement sortir le code du "mode paresseux".
Lorsqu'un navigateur prenant en charge le mode strict détecte le mode strict dans le code, il détectera et exécutera le code de manière plus stricte.
Le mode strict impose certaines restrictions sur la sémantique JavaScript normale :
Le mode strict élimine certaines des erreurs silencieuses d'origine en les lançant .
Le mode strict permet au moteur JS d'effectuer davantage d'optimisations lors de l'exécution du code (sans avoir à gérer une syntaxe particulière).
Le mode strict désactive certaines syntaxes qui pourraient être définies dans les futures versions d'ECMAScript.
Alors comment activer le mode strict ? Le mode strict prend en charge la migration granulaire :
Peut prendre en charge l'activation du mode strict dans les fichiers js ;
Il prend également en charge l'activation du mode strict pour une certaine fonction ;
JavaScript est conçu pour être plus facile à utiliser pour les développeurs novices, donc parfois sa syntaxe est incorrecte, mais ne pensez pas qu'il puisse être analysé normalement ;
Cependant, cette méthode peut présenter des risques pour la sécurité ;
En mode strict, ce type de transaction sera traité comme une erreur afin qu'elle puisse être rapidement découverte et corrigée ;
Voici un résumé de quelques limitations courantes :
Il existe deux manières de créer accidentellement des variables globales :
Déclarez globalement les variables globales directement sans utiliser de mots-clés
Si vous déclarez une variable sans utiliser de mots-clés dans une fonction, la fonction sera promue en variable globale par défaut. L'exemple de code est le suivant :
'utiliser strict' // Désactiver la création accidentelle de variables globales message = 'Création accidentelle de variables globales' console.log(message) //Le message d'erreur est : Uncaught ReferenceError : le message n'est pas défini fonction foo () { âge=20 console.log(âge) } foo() // ReferenceError : l'âge n'est pas défini
L'exemple de code est le suivant :
//Activer le mode strict et convertir le problème directement en erreur 'use strict' const v = 100;//(définir la constante) v = 1,14 ; //Réaffecter la valeur (à la variable) console.log(v); // Erreur de type non détectée : affectation à une variable constante.
En mode strict, vous ne pouvez pas utiliser l'opérateur de désélection sur les variables.
// Activer le mode strict 'use strict' var v = 100 ; delete v;//En mode non strict : il s'agit d'un échec silencieux, aucune erreur n'est signalée ni la variable v n'est supprimée. console.log(v);//100 //Après avoir activé le mode strict, une erreur est signalée à la place Suppression d'un identifiant non qualifié en mode strict.
En mode strict, l'utilisation du mot-clé delete pour les tableaux et les attributs de méthode a le même effet.
// Activer le mode strict 'use strict' // 1. Supprimez le contenu du tableau en mode strict var arr = [1,2,3,4] supprimer arr[0] ; console.log(arr);//[ <1 élément vide>, 2, 3, 4 ] // 2. Attributs de la fonction delete en mode strict var obj = { nom: 'Cochon Homme' } supprimer obj.name ; console.log(obj.name)//non défini
L'exemple de code est le suivant :
'utiliser strict' // Les fonctions avec le même nom de paramètre ne sont pas autorisées function foo2 (x, y, x) { console.log(x, y, x) } foo2(10, 20, 30) // SyntaxError : nom de paramètre en double non autorisé dans ce contexte
L'exemple de code est le suivant :
// Le format octal original var num1 = 0123 n'est pas autorisé var num2 = 0o123 // Peut être écrit dans ce format en octal var num3 = 0x123 // Peut être écrit dans ce format en hexadécimal var num4 = 0b100 // Peut être écrit dans ce format en binaire console.log(num1) // SyntaxError : les littéraux octaux ne sont pas autorisés en mode strict. console.log(num2, num3, num4) // 83 291 4
L'exemple de code est le suivant :
'utiliser strict' var message = 'Bonjour tout le monde'; var obj = { nom : 'jam', âge : 20 } // L'instruction with peut former sa propre portée. Lors de l'impression de l'âge dans l'instruction with, l'attribut age dans l'objet obj sera affiché. Cependant, lorsque le message d'attribut inexistant est imprimé dans l'instruction with, il sera imprimé. un niveau vers la portée externe. Un niveau pour trouver la fonction foo () { avec (obj) { console.log(âge) console.log(message) } console.log(message) } foo() // SyntaxError : le code du mode strict ne peut pas inclure d'instruction with
L'exemple de code est le suivant :
var jsString = "var message = 'bonjour tout le monde';console.log(message)" eval(jsString) // Sortie bonjour tout le monde console.log(message) //Le message d'erreur est : ReferenceError : le message n'est pas défini
开启严格模式eval函数不会向上引用变量所以全局作用域就没有message这个变量所以会报错
L'exemple de code est le suivant :
'utiliser strict' // En mode strict, la fonction auto-exécutable (liaison par défaut) pointera vers undefined, et en mode non strict, elle pointera vers window fonction foo () { console.log(ce) } foo() // non défini