Cette fois, je vais vous montrer comment utiliser le mode strict JS dans les projets. Quelles sont les précautions pour utiliser le mode strict JS dans les projets. Voici des cas pratiques, jetons un coup d'oeil.
Qu'est-ce que le mode strict ?
Un mode qui rend le codage JS plus standardisé et élimine certaines syntaxe Javascript déraisonnables, pièces détachées, réduisez certains comportements étranges
Comment utiliser ?
Ajoutez simplement la chaîne suivante, cette syntaxe est rétrocompatible si elle est compatible. est un moteur JavaScript qui ne prend pas en charge le mode strict, il sera directement considéré comme une chaîne littérale non attribuée et sera directement ignoré. Les moteurs pris en charge activeront le mode strict
'use strict'
Remarque :
1. S'il est utilisé dans la portée globale, l'intégralité du script js activera ce mode
2 S'il est utilisé uniquement à l'intérieur de la fonction. Si c'est le cas, alors il est simplement activé en interne dans la fonction.
function doSomething(){ 'use strict' // 其他代码 }
Variables
1. Quand et comment créer des variables en mode strict Il existe des restrictions sur la création de variables. la création accidentelle de variables globales n'est pas autorisée. Les variables globales peuvent être créées comme suit en mode non strict, mais pas en mode strict
// Variable non déclarée
// Mode non strict : créer une variable globale
// Mode strict : lancer une erreur referenceError
2. En mode strict, il existe également des restrictions sur les noms de variables. En particulier, vous ne pouvez pas utiliser de mots réservés tels que implémentements, interface. , let, package, private, etc. comme noms de variables. Si vous utilisez ces variables pour les nommer, vous exporterez des erreurs de syntaxe
objets.
La manipulation d'objets en mode strict est plus susceptible de provoquer des erreurs qu'en mode non strict. Les situations suivantes provoqueront des erreurs de syntaxe1. attributs TypeError2. L'utilisation de l'opérateur de suppression sur des propriétés non configurables générera TypeError3. L'ajout de propriétés à des objets non extensibles générera TypeError<. 🎜>FonctionEn mode strict, il faut que les paramètres de la
fonction nomméeEn mode strict Le comportement de l'objet arguments est également différent en mode. En mode strict, la modification de la valeur du paramètre nommé sera également répercutée dans l'objet arguments, mais en mode strict ces deux valeurs sont complètement indépendantes// 重命名参数的 // 非严格模式:没有错误,只能访问第二个参数,如果要访问第一个参数,就必须通过arguments // 严格模式语法错误 function sum(num,num){ //do something }
function showValue(value){ value = 'foo' console.log(value) console.log(arguments[0]) // 非严格模式 : 'foo' 严格模式 :'hello' } showValu('hello')
Fonction En mode strict, les paramètres de la fonction doivent être uniques
// 重名的参数 // 非严格模式中,没有错误,只能访问第一个参数 // 严格模式 :抛出错误 Uncaught SyntaxError: Duplicate parameter name not allowed in this context function sum(num,num){ 'use strict' // do something }
Objet argumentsEn mode non strict, la modification de la valeur du paramètre nommé sera également répercutée dans l'objet arguments, tandis qu'en mode strict, ces deux valeurssont complètement indépendant
// 修改命名参数的值 // 非严格模式:修改会反应到arguments中 // 严格模式中不会反应到arguments中 function sum(num,num2){ 'use strict' num=3 console.log(arguments[0],num2)// 严格模式下输出为1,2 非严格模式下输出为3,2 } sum(1,2)
eval() Le plus gros changement de la fonction eval est qu'elle ne crée plus de variables ou de fonctions dans le contenant le contexte :
En mode strict, vous pouvez déclarer des variables et des fonctions dans eval(), mais ces lignes ou fonctions secondaires ne peuvent être valides que dans la portée spéciale en cours d'évaluation, et seront ensuite détruites. Il n'y a aucun problème à exécuter le code suivant// 使用eval函数创建变量 // 非严格模式中:弹出框弹窗 20 // 严格模式中:调用alert(x)时报错 function doSomething(){ eval('var x=20') alert(x) }
'use strict' var result=eval('x=1,y=13;x+y') alert(result)
Supprimez ceci En mode non strict
Lors de l'utilisation de la méthode apply() ou call() de la fonction, les valeurs nulles et indéfinies seront converties en objets globaux, et en strict mode, la valeur de la fonction est toujours la valeur spécifiée, peu importe ce qui est spécifié :
// 访问属性 // 非严格模式:访问全局实行 // 严格模式:抛出错误,因为this的值是null var color = "red"; function displayColor() { alert(this.color); } displayColor(null);
Autres modifications. 在严格模式中with语句被抛弃掉了,在非严格模式中with语句能够改变解析标识符的路径,但在严格模式下,with语句被简化掉了,因此,在严格模式下使用with语句是导致语法错误 相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章! 推荐阅读 Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!// with语句
// 非严格模式:允许
// 严格模式:抛出语法错误
with (location) {
console.log(href);
}