Heim  >  Artikel  >  Web-Frontend  >  So verwenden Sie den strikten JS-Modus in Ihrem Projekt

So verwenden Sie den strikten JS-Modus in Ihrem Projekt

php中世界最好的语言
php中世界最好的语言Original
2018-06-05 09:17:041998Durchsuche

Dieses Mal zeige ich Ihnen, wie Sie den strikten JS-Modus in Projekten verwenden. Was sind die Vorsichtsmaßnahmen für die Verwendung des strikten JS-Modus in Projekten?

Was ist der strikte Modus?

Ein Modus, der die JS-Codierung standardisierter macht und einige unangemessene

Javascript-Syntax eliminiert. Lose Teile, reduzieren Sie einige seltsame Verhaltensweisen

Wie benutzt man?

Fügen Sie einfach die folgende Zeichenfolge hinzu. Diese Syntax ist abwärtskompatibel ist eine JavaScript-Engine, die den strikten Modus nicht unterstützt. Sie wird direkt als nicht zugewiesenes Zeichenfolgenliteral betrachtet und direkt ignoriert. Unterstützte Engines aktivieren den strikten Modus

'use strict'

Hinweis:

1. Bei Verwendung im globalen Bereich aktiviert das gesamte js-Skript diesen Modus

2. Bei Verwendung nur innerhalb der Funktion. Wenn ja, wird er nur intern in der Funktion aktiviert

function doSomething(){
 'use strict' 
 // 其他代码 
}

Variable

1. Wann und wie man Variablen im strikten Modus erstellt. Zunächst gibt es Einschränkungen bei der versehentlichen Erstellung globaler Variablen ist nicht zulässig. Im nicht-strikten Modus können Sie globale Variablen wie folgt erstellen, im strikten Modus ist dies jedoch nicht möglich

// Nicht deklarierte Variablen

// Nicht-strikter Modus: erstellen globale Variablen
// Strikter Modus: throw referenceError error

2 Im strikten Modus gibt es auch Einschränkungen für Variablennamen, Sie können keine reservierten Wörter wie „implementiert“, „schnittstelle“ und „let“ verwenden , Paket, privat usw. als Variablennamen. Wenn Sie diese Variablen benennen, werden

Syntaxfehler

Objekte exportiert

Das Betreiben von Objekten im strikten Modus führt eher zu Fehlern als im nicht strikten Modus. Die folgenden Situationen führen zu Syntaxfehlern

1. Das Zuweisen eines Werts zu einem schreibgeschützten Attribut führt zu TypeError

2. Die Verwendung des Löschoperators für nicht konfigurierbare Eigenschaften löst TypeError aus

3. Das Hinzufügen von Eigenschaften zu nicht erweiterbaren Objekten löst TypeError aus

Funktion

Im strikten Modus ist es erforderlich, dass die Parameter der benannten

Funktion eindeutig sein müssen

// 重命名参数的
// 非严格模式:没有错误,只能访问第二个参数,如果要访问第一个参数,就必须通过arguments
// 严格模式语法错误
function sum(num,num){
  //do something   
}

Argumentobjekt im strikten Modus Das Verhalten ist auch Anders. Im strikten Modus wird die Änderung des Werts des benannten Parameters auch im Argumentobjekt widergespiegelt, aber im strikten Modus sind diese beiden Werte völlig unabhängig

function showValue(value){
 value = 'foo'
 console.log(value)
 console.log(arguments[0]) // 非严格模式 : 'foo' 严格模式 :'hello'
  
}   
showValu('hello')

Funktion

Im strengen Modus müssen die Parameter der Funktion eindeutig sein

// 重名的参数
// 非严格模式中,没有错误,只能访问第一个参数
// 严格模式 :抛出错误 Uncaught SyntaxError: Duplicate parameter name not allowed in this context
function sum(num,num){
  'use strict'
  // do something 
}

Argumente Objekt

In Im nicht strikten Modus wird die Änderung des Werts des benannten Parameters auch im Argumentobjekt widergespiegelt, während im strikten Modus die beiden Werte völlig unabhängig sind

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

eval ()

Die größte Änderung der Auswertungsfunktion besteht darin, dass sie keine Variablen oder Funktionen mehr im enthaltenden Kontext erstellt:

// 使用eval函数创建变量
// 非严格模式中:弹出框弹窗 20
// 严格模式中:调用alert(x)时报错
function doSomething(){
  eval('var x=20')
  alert(x)
}

Im strikten Modus können Variablen und Funktionen dies tun in eval() deklariert werden, aber diese Nebenzeilen oder Funktionen können nur in dem speziellen Bereich gültig sein, der ausgewertet wird, und werden dann zerstört. Es gibt kein Problem bei der Ausführung des folgenden Codes

'use strict'
var result=eval('x=1,y=13;x+y')
alert(result)

Hier die Variablen werden in eval x und y deklariert und dann addiert, wodurch ihre Summe gelöscht wird, sodass der Wert der Ergebnisvariablen 21 ist, was das Ergebnis von x+y ist, wenn die Warnung aufgerufen wird, obwohl x und y nicht mehr existieren , der Wert der Ergebnisvariablen. Es ist immer noch gültig

, um dies zu unterdrücken

Im nicht-strikten Modus

verwenden Sie die Funktion werden Null- und undefinierte Werte in globale Objekte konvertiert. Im strikten Modus ist dieser Wert der Funktion immer der angegebene Wert, unabhängig davon, welcher Wert angegeben ist:

// 访问属性
// 非严格模式:访问全局实行
// 严格模式:抛出错误,因为this的值是null
var color = "red";
function displayColor() {
 alert(this.color);
}
displayColor(null);

Weitere Änderungen

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

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

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

推荐阅读

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

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

Das obige ist der detaillierte Inhalt vonSo verwenden Sie den strikten JS-Modus in Ihrem Projekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn