Maison >interface Web >js tutoriel >Apprentissage avancé de la syntaxe JavaScript en mode strict
Cet article vous apporte des connaissances pertinentes sur javascript, qui présente principalement des problèmes liés au mode strict, facile à comprendre. Il s'agit d'un mode JavaScript restrictif, qui rend le code implicite. Sortons du "mode paresseux". jetez un œil ci-dessous. J’espère que cela sera utile à tout le monde.
[Recommandations associées : tutoriel vidéo javascript, front-end web]
Dans la norme ECMAScript5, JavaScript a proposé le concept de mode strict :
. mode strict Il est facile de comprendre qu'il s'agit d'un mode JavaScript restrictif, qui fait implicitement sortir le code du "mode paresseux".
Les navigateurs prenant en charge le mode strict détecteront et exécuteront le code de manière plus stricte lors de la détection du mode strict dans le code.
Le mode strict impose certaines restrictions sur la sémantique JavaScript normale :
Le mode strict élimine certaines des erreurs silencieuses d'origine en générant des erreurs.
Le mode strict permet au moteur JS d'effectuer davantage d'optimisations lors de l'exécution du code (pas besoin de 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 :
JavaScript est conçu pour les développeurs novices. plus facile à démarrer, donc parfois si vous achetez une syntaxe incorrecte, ne pensez pas qu'elle puisse être analysée normalement
Cependant, cette méthode peut entraîner des risques de sécurité
En mode strict, ce type de transaction sera considéré comme une erreur ; qu'il peut être rapidement découvert et corrigé ;
Résumé quelques limitations courantes :
Il existe deux manières de créer accidentellement des variables globales :
'use strict' // 禁止意外创建全局变量 message = '意外创建全局变量' console.log(message) // 报错信息为:Uncaught ReferenceError: message is not defined function foo () { age = 20 console.log(age) } foo() // ReferenceError: age is not defined
L'exemple de code est le suivant :
//开启严格模式,将问题直接转化为报错 'use strict' const v = 100;//(定义常量) v = 1.14;//重新赋值(为变量) console.log(v); // Uncaught TypeError: Assignment to constant variable.
En mode strict, vous ne pouvez pas utiliser l'opérateur de désélection sur les variables.
// 开启严格模式 'use strict' var v = 100; delete v;//非严格模式下:此处为静默失败,既没有报错也没有删除变量v console.log(v);//100 //开启严格模式后,改为报错Delete of an unqualified identifier in strict mode.
Utilisez le mot-clé delete pour les tableaux et les attributs de méthode en mode strict, l'effet reste inchangé.
// 开启严格模式 'use strict' // 1、严格模式下删除数组内容 var arr = [1,2,3,4] delete arr[0]; console.log(arr);//[ <1 empty item>, 2, 3, 4 ] // 2、严格模式下delete函数的属性 var obj = { name : '猪猪侠 ' } delete obj.name; console.log(obj.name)//undefined
L'exemple de code est le suivant :
'use strict' // 不允许函数有相同的参数名称 function foo2 (x, y, x) { console.log(x, y, x) } foo2(10, 20, 30) // SyntaxError: Duplicate parameter name not allowed in this context
L'exemple de code est le suivant. suit :
// 不允许使用原先的八进制格式 var num1 = 0123 var num2 = 0o123 // 可以写成这种格式 八进制 var num3 = 0x123 // 可以写成这种格式 十六进制 var num4 = 0b100 // 可以写成这种格式 二进制 console.log(num1) // SyntaxError: Octal literals are not allowed in strict mode. console.log(num2, num3, num4) // 83 291 4
n'est pas autorisée. L'exemple de code est le suivant :
'use strict' var message = 'Hello World'; var obj = { name: 'jam', age: 20 } // with语句可以形成自己的作用域,在with语句中打印age时,会输出obj对象中的age属性,但在with语句中打印不存在的属性message时,会向外层的作用域一层一层去查找 function foo () { with (obj) { console.log(age) console.log(message) } console.log(message) } foo() // SyntaxError: Strict mode code may not include a with statement
L'exemple de code est le suivant :
var jsString = "var message = 'hello world';console.log(message)" eval(jsString) // 输出 hello world console.log(message) // 报错信息为:ReferenceError: message is not defined
开启严格模式 eval函数不会向上引用变量 所以全局作用域就没有message这个变量所以会报错
L'exemple de code est le suivant :
'use strict' // 在严格模式下,自执行函数(默认绑定)会指向undefined ,非严格模式下会指向window function foo () { console.log(this) } foo() // undefined
[Recommandations associées : tutoriel vidéo javascript, front-end web]
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!