In diesem Artikel geht es um den Umfang und die Variablen in JavaScript Wenn Sie nichts über den Umfang und die Variablen in JavaScript wissen oder sich für den Umfang und die Variablen in JavaScript interessieren, dann werden wir uns informieren Lesen Sie diesen Artikel. Okay, genug Unsinn, kommen wir zum Punkt
Variabler Umfang
Bereich: Dies ist der Bereich, in dem Variablen deklariert werden, und es ist auch der zugängliche Bereich von Variablen und Funktionen. Global deklarierte Variablen sind global sichtbar und zugänglich. Wenn innerhalb einer Funktion deklarierte Variablen nur innerhalb der Funktion zugänglich sind, werden sie lokale Variablen genannt.
Ein paar Punkte, die Sie beachten sollten:
1.In JavaScript gibt es keinen Bereich auf Blockebene (in ES5 und vor ES6) , nur Funktionsumfang und globaler Umfang. Innerhalb der for-Schleife definierte Variablen haben einen Gültigkeitsbereich auf Funktionsebene.
2. Variablen, die nicht innerhalb einer Funktion oder ohne Variable deklariert sind, sind globale Variablen und haben einen globalen Gültigkeitsbereich. Besonderes: var a = b = c = 0; b und c sind globale Variablen .
3.Der Gültigkeitsbereich einer Variablen basiert auf dem Zeitpunkt ihrer Deklaration, da der Gültigkeitsbereich der Variablen im Parsing liegt Stadium des js-Codes Die Formulierung der Regeln ist abgeschlossen.
Einfacher Fall:
//变量的作用域 var t = 90; //全局作用域,在js代码中任何一个地方都可以访问 function f1(){ //f1函数 在全局作用域中 var t2 = 10; //t2是f1函数内部变量,只有在f1内可访问 console.log(t2); function f2(){ //f2函数 在f1函数的作用域中 var t3 = 20;//只能在f2函数内部才能访问 console.log(t3); return t2*t3; // 访问了父级作用域中的t3 } return f2(); } var m = f1(); console.log(m);
2. Kein Bereich auf Blockebene
Ich habe bereits erwähnt, dass es in JavaScript keinen Bereich auf Blockebene gibt. Dies gilt für es5 und es6 vor 9 (sei es const usw.). Der Gültigkeitsbereich der in der for-Schleife und der while-Schleife definierten Variablen ist der Gültigkeitsbereich auf Funktionsebene.
Zum Beispiel:
//没有块级作用域 function f1(){ for(var i=0;i<10;i++){//i变量是在for中定义的 console.log(i);//打印1-9 } console.log(i);//可以访问到i变量 打印10 而在c++ Java等语言中是不行的 } f1();
3. Variablen Hositing
Wenn die js-Engine js-Code ausführt, erstellt sie zunächst einen globalen EC (Kontext) und den EC der Funktion (falls vorhanden) wurden beim Erstellen der EC die in der aktuellen
-Domäne deklarierten Variablen auf undefiniert initialisiert. Die js-Engine sucht zunächst nach der Variablendefinition von var im aktuellen Bereich. Wenn sie diese Definition findet, wird sie von
an den Anfang des Bereichs verschoben und im Speicher gespeichert (das heißt, das variable Objekt VO in EC) , auf undefiniert gesetzt.
Fall:
var a = 10; function f1(){ //在这里首先会创建f1的执行上下文 并把里面的变量初始化为undefined console.log(a); //代码执行到这里的时候, js引擎会去当前作用域内存中问有没有这个变量的声明,发现有,那么就给他初始的undefined //假如说下面没有var变量进行定义a,那么js就会向父级作用域中去找这个变量,直到找到为止 var a = 19; //在这里给a赋值了19 console.log(a); // 打印了19 } f1(); console.log(a); //这里无疑是10 没什么问题
Wenn die js-Engine einen Kontext erstellt, fördert sie daher bei Bedarf Variablen. Dies kann als Sicherheitsschutzmechanismus bezeichnet werden, der in ES6 ausführlich erläutert wird.
Hinweis: Wenn die Variablendeklaration und die Funktionsdeklaration denselben Namen haben, hat die Funktion eine höhere Priorität.
console.log(b); //打印b(){} var b = 9; function b(){ } console.log(b); //打印9
Da die Funktion nach vorne befördert wird, ist das, was am Anfang gedruckt wird, zweifellos b(){}, weil js Es ist eine dynamische Sprache, weisen Sie b auf 9 neu zu und überschreiben Sie die vorherige Funktion.
Fall 1:
if ("a" in window) { var a = 1; } console.log(a);
Als ich Ihren Code sah, lautete Ihre Antwort „Was?“ Könnte es sein: Uncaught ReferenceError: a ist nicht definiert?
Ich sage Ihnen, Die Antwort ist 1
Zuallererst müssen Sie wissen, dass var a = 1 tatsächlich eine globale Variable definiert (die zu den Attributen unter dem Fensterobjekt gehört), denn wenn es sich nicht um einen Blockbereich handelt und es keinen Blockbereich gab in JavaScript vor es5. Damit ist dieses bedingte Urteil etabliert.
Schau noch einmal:
if (!("a" in window)) { var a = 1; } console.log(a);
Was soll das also sein? Die Antwort ist undefiniert, da die Bedingung nicht erfüllt ist und die Zuordnung zu a nicht erfolgreich ist. Der Standardwert ist undefiniert
案例二:
fun(); console.log(a); console.log(b); console.log(c); function fun(){ var a = b = c = 10; console.log("fun中的a="+a); console.log("fun中的b="+b); console.log("fun中的c="+c); }
你得答案是什么?
答案是:
由于a没有定义,所以直接报错,下面的两行代码被阻止执行了,假如把外面的console.log(a)注释掉呢?
fun(); //console.log(a); console.log(b); console.log(c); function fun(){ var a = b = c = 10; console.log("fun中的a="+a); console.log("fun中的b="+b); console.log("fun中的c="+c); }
输出的是:
为什么外面b c都会是10呢? 原因就是var a = b = c = 10 ;其中b c就是全局变量,如果你想定义三个内部变量,那么应该这样定义:
var a = 10 ,b = 10, c = 10;
弄懂了以上这些区别,基本上变量提升就没什么大问题了。以上就是本篇文章的所有内容,大家要是还不太了解的话,可以自己多实现两边就很容易掌握了哦!
相关推荐:
Das obige ist der detaillierte Inhalt vonEin genauerer Blick auf Umfang und Variablen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Die Verschiebung von C/C zu JavaScript erfordert die Anpassung an dynamische Typisierung, Müllsammlung und asynchrone Programmierung. 1) C/C ist eine statisch typisierte Sprache, die eine manuelle Speicherverwaltung erfordert, während JavaScript dynamisch eingegeben und die Müllsammlung automatisch verarbeitet wird. 2) C/C muss in den Maschinencode kompiliert werden, während JavaScript eine interpretierte Sprache ist. 3) JavaScript führt Konzepte wie Verschlüsse, Prototypketten und Versprechen ein, die die Flexibilität und asynchrone Programmierfunktionen verbessern.

Unterschiedliche JavaScript -Motoren haben unterschiedliche Auswirkungen beim Analysieren und Ausführen von JavaScript -Code, da sich die Implementierungsprinzipien und Optimierungsstrategien jeder Engine unterscheiden. 1. Lexikalanalyse: Quellcode in die lexikalische Einheit umwandeln. 2. Grammatikanalyse: Erzeugen Sie einen abstrakten Syntaxbaum. 3. Optimierung und Kompilierung: Generieren Sie den Maschinencode über den JIT -Compiler. 4. Führen Sie aus: Führen Sie den Maschinencode aus. V8 Engine optimiert durch sofortige Kompilierung und versteckte Klasse.

Zu den Anwendungen von JavaScript in der realen Welt gehören die serverseitige Programmierung, die Entwicklung mobiler Anwendungen und das Internet der Dinge. Die serverseitige Programmierung wird über node.js realisiert, die für die hohe gleichzeitige Anfrageverarbeitung geeignet sind. 2. Die Entwicklung der mobilen Anwendungen erfolgt durch reaktnative und unterstützt die plattformübergreifende Bereitstellung. 3.. Wird für die Steuerung von IoT-Geräten über die Johnny-Five-Bibliothek verwendet, geeignet für Hardware-Interaktion.

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten

JavaScript ist die Kernsprache der modernen Webentwicklung und wird für seine Vielfalt und Flexibilität häufig verwendet. 1) Front-End-Entwicklung: Erstellen Sie dynamische Webseiten und einseitige Anwendungen durch DOM-Operationen und moderne Rahmenbedingungen (wie React, Vue.js, Angular). 2) Serverseitige Entwicklung: Node.js verwendet ein nicht blockierendes E/A-Modell, um hohe Parallelitäts- und Echtzeitanwendungen zu verarbeiten. 3) Entwicklung von Mobil- und Desktop-Anwendungen: Die plattformübergreifende Entwicklung wird durch reaktnative und elektronen zur Verbesserung der Entwicklungseffizienz realisiert.

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.


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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

Dreamweaver CS6
Visuelle Webentwicklungstools

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software