


Was ist der Unterschied zwischen var und let in Javascript?
Unterschiede: 1. var hat eine Variablenheraufstufung, let jedoch nicht; 2. let erlaubt keine wiederholten Deklarationen im gleichen Bereich, var jedoch schon; 3. let hat keine temporären Totzonenprobleme let Für Fenster 5 ist kein entsprechendes Attribut festgelegt. let generiert einen Gültigkeitsbereich auf Blockebene, var jedoch nicht.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Wenn Sie den Unterschied zwischen var
(ES5) und let
(ES6) verstehen möchten, müssen Sie zunächst die variable Förderung von JS unter ES5 verstehenvar
(ES5)和let
(ES6)区别,首先就要了解ES5下JS的变量提升
一、变量提升(声)
当浏览器开辟出供代码执行的栈内存后,代码并没有自上而下立即执行,而是继续做了一些事情:把当前作用域中所有带var/function关键字的进行提前的声明和定义 => 变量提升机制
- Was ist der Unterschied zwischen var und let in Javascript?只是提前声明(declare)
var a;
,如果只声明没有赋值,默认值是undefined
例如:
console.log(a); var a = 13;
输出:undefined
相当于:
var a; // 只声明没有赋值,默认为undefined console.log(a); a = 13;
- 带function的不仅声明,而且还定义了(defined),准确来说就是让变量和某个值进行关联。
二、let和var的区别
1. let
和const
不存在变量提升机制
创建变量的六种方式中:var/function
有变量提升,而let/const/class/import
都不存在这个机制
2. <span style="font-size: 18px;">var</span>
允许重复声明,而<span style="font-size: 18px;">let</span>
不允许重复声明
在相同的作用域(或执行上下文中)
- 如果使用
var/function
关键词声明变量并且重复声明,是不会有影响的(声明第一次之后,之后再遇到就不会再重复声明了) - 但使用
let/const
就不行,浏览器会校验当前作用域中是否已经存在这个变量了,如果已经存在了,则再次基于let
等重新声明就会报错
在浏览器开辟栈内存供代码自上而下执行之前,不仅有变量提升的操作,还有很多其他的操作 => “词法解析”或者“词法检测”:就是检测当前即将要执行的代码是否会出现“语法错误 SyntaxError”,如果出现错误,代码将不会再执行(第一行都不会执行)
console.log(1) // => 这行代码就已经不会执行了 let a = 12 console.log(a) let a = 13 // => 此行出错:SyntaxError: Identifier 'a' has already been declared console.log(a)
所谓重复就是:不管之前通过什么方法,只要当前栈内存中存在了这个变量,我们使用let/const
等重复再声明这个变量就是语法错误。eg:
console.log(a) var a = 12 let a = 13 // => SyntaxError: Identifier 'a' has already been declared console.log(a)
console.log(a) let a = 13 var a = 12 // => SyntaxError: Identifier 'a' has already been declared console.log(a)
3. let能解决typeof检测时出现的暂时性死区问题(let比var更严谨)
console.log(a) // => ReferenceError: a is not defined
typeof a
未报错
console.log(typeof a) // => 'undefined' 这是浏览器的bug,本应报错,因为没有a(暂时性死区)
使用let
后:
console.log(typeof a) // => ReferenceError: Cannot access 'a' before initialization let a
返回不能在a
1. Variablenförderung (Sound)
Wenn der Browser den Stapelspeicher für die Codeausführung öffnet, wird der Code nicht sofort von oben nach unten ausgeführt, sondern macht weiterhin etwas: Alle Dateien mit var/function ablegen im aktuellen Geltungsbereich Deklaration und Definition von Schlüsselwörtern im Voraus => Variabler Promotion-Mechanismus
- Mit var wird es nur im Voraus deklariert (declare)
var a;
, wenn ja nur ohne Zuweisung deklariert, der Standardwert istundefiniert
Zum Beispiel:
/* * Was ist der Unterschied zwischen var und let in Javascript?的:相当于给全局对象window设置了一个属性a * window.a = 13 */ a = 13 console.log(a) // => window.a 13 /* * 栈内存变量存储空间 * b * Was ist der Unterschied zwischen var und let in Javascript?:是在全局作用域下声明了一个变量b(全局变量), * 但是在全局下声明的变量也相当于给全局对象window增加了一个对应的 * 属性b(只有全局作用域具备这个特点) */ var b = 14 console.log(b) console.log(window.b)
Ausgabe: undefiniert
/* * 栈内存变量存储空间 * c * 带let的:仅仅在全局作用域下声明了一个变量b(全局变量), * 并未给全局对象window增加对应的属性c */ let c = 15 console.log(c) // => 15 console.log(window.c) // => undefined
- Es handelt sich nicht nur um Deklarationen mit Funktionen, sondern es definiert auch (definiert), genauer gesagt, es verknüpft eine Variable mit einem bestimmten Wert.
2. Der Unterschied zwischen let und var


let
und const
haben keinen Variablen-Promotion-MechanismusUnter den sechs Möglichkeiten, Variablen zu erstellen: var/function
verfügt über eine Variablen-Promotion, let/const/class/import
verfügt jedoch nicht über diesen Mechanismus 2.
<p>var</p>
erlaubt doppelte Deklarationen, während
<p>let<a href="https://www.php.cn/course/list/2.html" target="_blank">
keine doppelten Deklarationen 🎜🎜🎜 im selben Bereich (oder derselben Ausführung) zulässt Kontext) 🎜- Wenn Sie das Schlüsselwort
var/function
verwenden, um eine Variable zu deklarieren und sie wiederholt zu deklarieren, hat dies keine Auswirkungen (nach der ersten Deklaration wird sie nicht noch einmal wiederholt). (falls Sie später darauf stoßen) Deklariert) - Die Verwendung von
let/const
funktioniert jedoch nicht. Der Browser prüft, ob diese Variable bereits im aktuellen Bereich vorhanden ist. es basiert auf < Code>let und andere Neudeklarationen melden einen Fehler
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"> <style> * { margin: 0; padding: 0; } html, body { height: 100%; overflow: hidden; } button { padding: 5px 10px; cursor: pointer; } </style> </head> <body> <!----> <button value="red">红</button> <button value="green">绿</button> <button value="blue">蓝</button> <script> var body = document.querySelector('body'), buttons = document.querySelectorAll('button'), arr = ['red', 'green', 'blue'] for (var i = 0; i < buttons.length; i++) { buttons[i].onclick = function () { body.style.background = arr[i] } } </script> </body> </html>
let/const
verwenden, um diese Variable wiederholt zu deklarieren. Beispiel: 🎜rrreeerrreee🎜🎜🎜3. let kann das temporäre Totzonenproblem lösen, das während der Typerkennung auftritt (let ist strenger als var)🎜🎜🎜rrreee🎜typeof a
Es wird kein Fehler gemeldet🎜rrreee 🎜Uselet: 🎜rrreee🎜 gibt zurück, dass es nicht verwendet werden kann, bevor a
definiert ist, um das temporäre Totzonenproblem zu lösen. 🎜🎜🎜🎜4. Die von let erstellte globale Variable legt nicht das entsprechende Attribut für das Fenster fest. Schauen Sie sich zunächst den Unterschied zwischen dem Erstellen einer globalen Variablen mit und ohne Var an mit let:🎜rrree 🎜🎜🎜🎜🎜🎜5. let generiert einen Bereich auf Blockebene🎜🎜🎜🎜Kann der folgende Code die Hintergrundfarbe des Körpers in die Farbe ändern, die der Schaltfläche entspricht, wenn nicht , wie man es verbessert (Tencent)🎜rrreee 🎜Die Antwort ist natürlich nein, weil die durch var, i in der for-Schleife definierte Variable global ist, die Variable hochgestuft wird und nach 3 Schleifen i=3, weil auf jede geklickt wird Einer entspricht dem Klicken auf den letzten. 🎜🎜【Empfohlenes Lernen: 🎜Javascript-Tutorial für Fortgeschrittene🎜】🎜Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen var und let in Javascript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

JavaScript ist eine in der Webentwicklung weit verbreitete Programmiersprache, während WebSocket ein Netzwerkprotokoll für die Echtzeitkommunikation ist. Durch die Kombination der leistungsstarken Funktionen beider können wir ein effizientes Echtzeit-Bildverarbeitungssystem erstellen. In diesem Artikel wird erläutert, wie dieses System mithilfe von JavaScript und WebSocket implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. Zunächst müssen wir die Anforderungen und Ziele des Echtzeit-Bildverarbeitungssystems klären. Angenommen, wir haben ein Kameragerät, das Bilddaten in Echtzeit sammeln kann
