Для опису хостингу в javascript в одному реченні використовуються змінні та функції, підняті до верхньої частини області, в якій вони оголошені.
Я припускаю, що ви новачок, щоб зрозуміти правильне підняття спочатку ми зрозуміли різницю між undefined та ReferenceError
var v;
console.log(v);
console.log(abc);
тепер у наведеному нижче коді те, що ми бачимо? змінна і вираз функції є декларним.
<script>
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
</script>
але реальна картина з доказом того, що як змінна, так і функція розміщені вгорі там:
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));
Вихідні дані двох перших журналів невизначені, а TypeError: getSum не є функцією, оскільки і var totalAmo, і getSum розміщені у верхній частині області, як показано нижче
<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>
Але для оголошення функцій цілі функції були підняті вгорі своєї області дії.
console.log(getId());
function getId(){
return 739373;
}
Тепер та сама логіка стосується тих змінних, експересій функцій та оголошень функцій, оголошених всередині функціональної області. Ключовий момент: вони не будуть підняті у верхній частині файлу ;
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;
}
}
Отже, коли ви використовуєте ключове слово var , змінну та функцію, підняту зверху до області дії (глобальна область дії та область функцій). А як щодо хай і конст , const і let все ще знають про глобальну область дії та область функцій, як і var, але змінні const і let також знають про іншу область, яка називається заблокованою сферою. область дії блоку присутня всякий раз, коли є блок коду, наприклад, для циклу, якщо оператор else, цикл while тощо.
Коли ми використовуємо const і let, щоб оголосити змінну в цій області блоку, оголошення змінної буде піднято лише у верхній частині цього блоку, в якому вона знаходиться, і вона не буде піднята вгорі батьківської функції або вгорі глобальний обсяг, який він підняв.
function getTotal(){
let total=0;
for(var i = 0; i<10; i++){
let valueToAdd = i;
var multiplier = 2;
total += valueToAdd*multiplier;
}
return total;
}
Змінні в прикладі abobe будуть підняті як нижче
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;
}