Untuk menggambarkan hosting dalam javascript dalam satu kalimat adalah variabel dan fungsi diangkat ke atas ruang lingkup yang dideklarasikan.
Saya berasumsi Anda adalah seorang pemula, untuk memahami hoisting dengan benar pada awalnya kita telah memahami perbedaan antara undefined dan ReferenceError
var v;
console.log(v);
console.log(abc);
sekarang di kode di bawah apa yang kita lihat? variabel dan ekspresi fungsi adalah decleard.
<script>
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
</script>
tetapi gambaran nyata dengan bukti bahwa variabel dan fungsi diangkat di atas ruang lingkup:
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));
Output dari dua log pertama tidak ditentukan dan TypeError: getSum bukanlah fungsi karena var totalAmo dan getSum dipasang di bagian atas cakupannya seperti di bawah
<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>
Tetapi untuk deklarasi fungsi, seluruh fungsi dikibarkan di atas ruang lingkupnya.
console.log(getId());
function getId(){
return 739373;
}
Sekarang logika yang sama berlaku untuk variabel tersebut, eksperimen fungsi, dan deklarasi fungsi yang dideklarasikan di dalam cakupan fungsional. Poin utama: mereka tidak akan diangkat di atas file ;
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;
}
}
Jadi, ketika Anda menggunakan kata kunci var , variabel dan fungsi diangkat di atas ruang lingkup (lingkup global dan lingkup fungsi). Bagaimana dengan let dan const , const dan let masih sama-sama mengetahui cakupan global dan cakupan fungsi seperti var, tetapi variabel const dan let juga mengetahui cakupan lain yang disebut cakupan diblokir. cakupan blok hadir setiap kali ada blok kode, seperti for loop, if else statement, while loop dll.
Ketika kita menggunakan const dan membiarkan untuk mendeklarasikan variabel dalam lingkup blok ini, deklarasi variabel hanya akan diangkat di atas blok itu, dan tidak akan diangkat di atas fungsi induk atau di atas cakupan global yang diangkat.
function getTotal(){
let total=0;
for(var i = 0; i<10; i++){
let valueToAdd = i;
var multiplier = 2;
total += valueToAdd*multiplier;
}
return total;
}
Variabel dalam contoh abobe akan dikibarkan seperti di bawah ini
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;
}