Maison > interface Web > js tutoriel > le corps du texte

Comment utiliser le mode strict JS dans votre projet

php中世界最好的语言
Libérer: 2018-06-05 09:17:04
original
2025 Les gens l'ont consulté

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' 
 // 其他代码 
}
Copier après la connexion

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 syntaxe

1. attributs TypeError

2. L'utilisation de l'opérateur de suppression sur des propriétés non configurables générera TypeError

3. 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ée

soient uniques

En 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   
}
Copier après la connexion

function showValue(value){
 value = &#39;foo&#39;
 console.log(value)
 console.log(arguments[0]) // 非严格模式 : &#39;foo&#39; 严格模式 :&#39;hello&#39;
  
}   
showValu(&#39;hello&#39;)
Copier après la connexion

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){
  &#39;use strict&#39;
  // do something 
}
Copier après la connexion

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 valeurs​​sont complètement indépendant

// 修改命名参数的值
// 非严格模式:修改会反应到arguments中
// 严格模式中不会反应到arguments中
function sum(num,num2){
  &#39;use strict&#39;
num=3
  console.log(arguments[0],num2)// 严格模式下输出为1,2 非严格模式下输出为3,2
}
sum(1,2)
Copier après la connexion

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(&#39;var x=20&#39;)
  alert(x)
}
Copier après la connexion

Ici, les variables x et y sont déclarées dans eval, puis elles sont additionnées, et leur somme est annulée, donc la valeur de la variable résultat est 21, qui est le résultat de x+y, lors de l'appel d' alert , bien que x et y n'existent plus, la valeur de la variable résultat est toujours valide
&#39;use strict&#39;
var result=eval(&#39;x=1,y=13;x+y&#39;)
alert(result)
Copier après la connexion

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);
Copier après la connexion

Autres modifications.

在严格模式中with语句被抛弃掉了,在非严格模式中with语句能够改变解析标识符的路径,但在严格模式下,with语句被简化掉了,因此,在严格模式下使用with语句是导致语法错误

// with语句
// 非严格模式:允许
// 严格模式:抛出语法错误
with (location) {
 console.log(href);
}
Copier après la connexion

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读

js函数项目中常用方法总结

怎样使用原生js做出满天星效果

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal