Heim > Web-Frontend > js-Tutorial > Einführung in var, let, const, Bereich auf Blockebene und temporäre Totzone in ES6

Einführung in var, let, const, Bereich auf Blockebene und temporäre Totzone in ES6

不言
Freigeben: 2018-11-14 15:29:41
nach vorne
2689 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in Var, Let, Const, Blockebene und temporäre Totzone in ES6. Ich hoffe, er wird Ihnen helfen.

var

Syntax

var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
Nach dem Login kopieren

Verwenden Sie

var a, b=2 // 声明多个变量,可以赋值,也可以不赋值
a=1 // 先声明,再赋值
Nach dem Login kopieren

var-Variablenförderung

Variablen, die mit var deklariert wurden, werden zur Funktion hochgestuft

console.log(a) // undefined
var a =2  
console.log(a) // 2
console.log(b) //Uncaught ReferenceError: b is not defined...
Nach dem Login kopieren

obiger Code entspricht der

var a
console.log(a) // undefined
a=2
console.log(a) // 2
console.log(b) //Uncaught ReferenceError: b is not defined...
Nach dem Login kopieren

0x002 let

-Syntax

let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];
Nach dem Login kopieren

bei Verwendung von

let a, b = 2 // 声明多个变量,赋值不赋值无所谓
a = 2 // 声明之后再赋值
Nach dem Login kopieren

löst

console.log(a) // Uncaught ReferenceError: a is not defined...
let a=1
Nach dem Login kopieren
nicht mehr aus

Hinweis: Verwenden Sie schätzungsweise babel, um den Code zu übersetzen, und stellen Sie fest, dass nur let zu var wird, sodass der Code nach der Verwendung von babel zum Escape immer noch verbessert wird

Kann nicht wiederholt deklariert werden

let a=1
let a=2 // Uncaught SyntaxError: Identifier 'a' has already been declared
Nach dem Login kopieren

const

Sprache

const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];
Nach dem Login kopieren

Verwendung

const a=1, b=2 // 不能省略的值
Nach dem Login kopieren

Ein Wert, der nicht weggelassen werden kann

const c // Uncaught SyntaxError: Missing initializer in const declaration
Nach dem Login kopieren

Kann nicht wiederholt zugewiesen werden

const d=4
d=5 // Uncaught TypeError: Assignment to constant variable.
Nach dem Login kopieren

Änderbare Referenz

const e=[]
e[0]=0
console.log(e) //[0]
Nach dem Login kopieren

Bereich auf Blockebene

Der Bereich auf Blockebene ist die nützlichste Funktion, die mit let und const in der kommt vorherige js, der Umfang von js ist Funktionsebene, was mehrere berüchtigte Probleme mit sich bringt:

Versehentlich geänderter Wert

function varTest() {
  var x = 1;
  if (true) {
    var x = 2;  // 同样的变量!
    console.log(x);  // 2
  }
  console.log(x);  // 2
}
Nach dem Login kopieren

kann durch die Verwendung von let

function letTest() {
  let x = 1;
  if (true) {
    let x = 2;  // 不同的变量
    console.log(x);  // 2
  }
  console.log(x);  // 1
}
Nach dem Login kopieren

Das Böse vermieden werden for-Schleife und Klickereignis

var list = document.getElementById("list");

for (var i = 0; i < 5; i++) {
  var item = document.createElement("LI");
  item.appendChild(document.createTextNode("Item " + i));

  item.onclick = function (ev) {
    console.log("Item " +i + " is clicked.");
  };
  list.appendChild(item);
}
console.log(i) // 5
Nach dem Login kopieren

Wenn Sie auf das obige klicken, wird, egal auf welches Sie klicken, nur Item 5 is clicked. angezeigt. Obwohl Schließungen zur Lösung des Problems verwendet werden können, gibt es eine bessere Lösung Lösung jetzt.

let list = document.getElementById("list");

for (let i = 0; i < 5; i++) {
  let item = document.createElement("LI");
  item.appendChild(document.createTextNode("Item " + i));

  item.onclick = function (ev) {
    console.log("Item " +i + " is clicked.");
  };
  list.appendChild(item);
}
Nach dem Login kopieren

Die Bereichsregeln sind sehr einfach innerhalb des

{}-Blocks, einschließlich if, else, while, class , do...while, {}, function

{
    const f=6
}
console.log(f) // Uncaught ReferenceError: f is not defined
Nach dem Login kopieren

for Verwenden Sie let, um einen Anfangsfaktor in der Schleife zu deklarieren, der in jeder Schleife einen neuen Bereich darstellt

for (let i = 0; i < 10; i++) {
  console.log(i);
}
console.log(i) // Uncaught ReferenceError: i is not defined
Nach dem Login kopieren

switchNur ein Bereich

switch (x) {
  case 0:
    let foo;
    break;
    
  case 1:
    let foo; 
    break;
}
// Uncaught SyntaxError: Identifier 'foo' has already been declared
Nach dem Login kopieren

Temporal Dead Zone-Temporal Dead Zone-TDZ

Mit der Einführung von let und const wurde auch das Konzept der temporären Dead Zone eingeführt. Wenn Sie var innerhalb des Gültigkeitsbereichs (Funktionsbereichs) verwenden und auf eine Variable zugreifen, ohne var zum Deklarieren zu verwenden, werden Sie undefiniert. Wenn Sie jedoch let innerhalb des Bereichs (Bereichs auf Blockebene) verwenden und auf eine Variable zugreifen, bevor Sie sie zum Deklarieren verwenden, erhalten Sie einen ReferenceError. Vom Beginn des Bereichs bis zur let-Anweisung liegt ein vorübergehender Fehler vor Zone. .

{
 console.log(a) // Uncaught ReferenceError: a is not defined
 console.log(b) // Uncaught ReferenceError: b is not defined
 console.log(c) // undefined
 // 暂存死区
 let a =1
 const b=2
 var c=3
}
Nach dem Login kopieren

Hinweis: Schätzen Sie, verwenden Sie Babel, um den Code zu übersetzen, und finden Sie heraus, dass nur let zu var wird, sodass es möglicherweise keine vorübergehende tote Zone gibt, nachdem Sie mit babel entkommen sind

Das obige ist der detaillierte Inhalt vonEinführung in var, let, const, Bereich auf Blockebene und temporäre Totzone in ES6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage