Um das Hosting in Javascript in einem Satz zu beschreiben, werden Variablen und Funktionen an die Spitze des Bereichs gehievt, in dem sie deklariert sind.
![enter image description here]()
Ich gehe davon aus, dass Sie ein Anfänger sind. Um das Heben richtig zu verstehen, müssen wir zuerst den Unterschied verstehen zwischen undefiniert y ReferenceError
var v;
console.log(v);
console.log(abc);
/*
The output of the above codes are:
undefined
ReferenceError: abc is not defined*/
Im folgenden Code sehen wir, dass eine Variable und ein Funktionsausdruck deklariert sind.
<script>
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
</script>
aber das wirkliche Bild mit dem Beweis, dass sowohl die Variable als auch die Funktion auf den oberen Teil des Anwendungsbereichs gehievt werden:
console.log(totalAmo);
console.log(getSum(8,9));
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
console.log(totalAmo);
console.log(getSum(9,7));
Die Ausgabe der ersten beiden Protokolle lautet undefiniert y TypeError: getSum ist keine Funktion weil sowohl var totalAmo y getSum werden wie ein Blasebalg auf den oberen Rand ihres Geltungsbereichs gehievt
<script>
var totalAmo;
var getSum;
console.log(totalAmo);
console.log(getSum(8,9));
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
console.log(totalAmo);
console.log(getSum(9,7));
</script>
Aber für Funktionen Erklärung ganze Funktionen auf der Oberseite ihres Anwendungsbereichs gehängt.
console.log(getId());
function getId(){
return 739373;
}
/* output: 739373, because the whole function hoisted on the top of the scope.*/
Die gleiche Logik gilt nun für die innerhalb des Funktionsbereichs deklarierten Variablen, Funktionsausdrücke und Funktionsdeklarationen. Wichtigster Punkt: Sie werden nicht an die Spitze der Akte gehievt ;
function functionScope(){
var totalAmo;
var getSum;
console.log(totalAmo);
console.log(getSum(8,9));
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
}
Wenn Sie also var Schlüsselwort, Variable und Funktion, die in den oberen Bereich des Bereichs (globaler Bereich und Funktionsbereich) gehievt werden. Was ist mit lassen Sie y const const- und let-Variablen kennen immer noch den globalen Bereich und den Funktionsbereich, genau wie var, aber const- und let-Variablen kennen auch einen anderen Bereich, den blockierten Bereich. Ein Blockbereich ist immer dann vorhanden, wenn es einen Code-Block gibt, z. B. eine for-Schleife, eine if else-Anweisung, eine while-Schleife usw.
Wenn wir const und let verwenden, um eine Variable in diesem Blockbereich zu deklarieren, wird die Variablendeklaration nur an der Spitze des Blocks, in dem sie sich befindet, gehostet, und nicht an der Spitze der übergeordneten Funktion oder an der Spitze des globalen Bereichs, in dem sie gehostet wird.
function getTotal(){
let total=0;
for(var i = 0; i<10; i++){
let valueToAdd = i;
var multiplier = 2;
total += valueToAdd*multiplier;
}
return total;
}
Die Variablen im Adobe-Beispiel werden wie folgt hochgezogen
function getTotal(){
let total;
var multiplier;
total = 0;
for(var i = 0; i<10; i++){
let valueToAdd;
valueToAdd = i;
multiplier = 2;
total += valueToAdd*multiplier;
}
return total;
}