🕵️ SicherheitslückenHak5: Hackers Just Poisoned the Rust Supply Chain | Threat Wire(01.09.2026 um 14:00 Uhr)
🕵️ SicherheitslückenHak5: Hackers Found a Way Into Humanoid Robots | Threat Wire(04.09.2026 um 15:04 Uhr)
🔧 AI Nachrichten Bits und so #1021 (Passwort für Laufwerk)(31.08.2026 um 22:15 Uhr)
🔧 AI Nachrichten Bits und so #1022 (Wie Weißbier)(06.09.2026 um 20:39 Uhr)
🍏 iOS / Mac OSHue-App 6.0 ist da: das sind die Neuerungen(07.09.2026 um 17:21 Uhr)
🕵️ SicherheitslückenHak5: Hackers Just Poisoned the Rust Supply Chain | Threat Wire(01.09.2026 um 14:00 Uhr)
🕵️ SicherheitslückenHak5: Hackers Found a Way Into Humanoid Robots | Threat Wire(04.09.2026 um 15:04 Uhr)
🔧 AI Nachrichten Bits und so #1021 (Passwort für Laufwerk)(31.08.2026 um 22:15 Uhr)
🔧 AI Nachrichten Bits und so #1022 (Wie Weißbier)(06.09.2026 um 20:39 Uhr)
🍏 iOS / Mac OSHue-App 6.0 ist da: das sind die Neuerungen(07.09.2026 um 17:21 Uhr)

🔧 Programmierung 🕛 kürzlich 5 Min Lesezeit
0

Decoding Hoisting in JS

↗ Quelle (dev.to)
🗣️ Stimme:
📑 Inhaltsübersicht

One of the most confusing concepts for JavaScript beginners is Hoisting. Many developers coming from languages like Java, C, or Python often wonder:




  • How can a function be called before it is declared?

  • Why does JavaScript print undefined instead of throwing an error?

  • Why do let and const behave differently from var?



To answer these questions, we need to understand how JavaScript executes code behind the scenes.









What is Hoisting?



Hoisting is JavaScript's behavior of allocating memory for variables and functions before executing the code.



In simple words:




JavaScript scans the entire program first, creates memory for variables and functions, and then starts executing the code line by line.




Because of this, some variables and functions can be accessed before they appear in the source code.









Does JavaScript Actually Move Code?



No.



Nothing physically moves to the top.



Hoisting is simply a conceptual way to explain JavaScript's internal execution process.









JavaScript Execution Phases



JavaScript executes code in two phases:






1. Memory Creation Phase



During this phase:




  • Variables declared using var are initialized with undefined.

  • Function declarations are stored completely in memory.

  • Variables declared using let and const are created but remain inaccessible.









2. Execution Phase



After memory allocation, JavaScript executes statements one by one.









Variable Hoisting with var



Consider:




CODE
console.log(x);

var x = 10;









Output






CODE
undefined






Many beginners expect:




CODE
10






but JavaScript internally behaves as:




CODE
var x;

console.log(x);

x = 10;






During memory creation:




CODE
x → undefined






During execution:




  1. Print undefined

  2. Assign 10 to x









Why Does It Print Undefined?



Because only the declaration:




CODE
var x;






is hoisted.



The assignment:




CODE
x = 10;






remains in its original place.









Variable Hoisting with let






CODE
console.log(age);

let age = 25;









Output






CODE
ReferenceError:
Cannot access 'age' before initialization












Variable Hoisting with const






CODE
console.log(pi);

const pi = 3.14;









Output






CODE
ReferenceError












What is Temporal Dead Zone (TDZ)?



Variables declared with let and const are hoisted but remain inside a region called the Temporal Dead Zone.



The TDZ starts from the beginning of the scope and ends when the variable is initialized.



Example:




CODE
console.log(a);

let a = 10;






Here:




CODE
TDZ begins

console.log(a)

ReferenceError

let a = 10

TDZ ends












Function Hoisting



Functions declared using function declarations are completely hoisted.



Example:




CODE
greet();

function greet()
{
console.log("Hello");
}









Output






CODE
Hello






Internally:




CODE
function greet()
{
console.log("Hello");
}

greet();












Why Are Functions Fully Hoisted?



JavaScript stores the entire function in memory during the memory creation phase.



Therefore, the function becomes available even before its declaration appears in the code.









Function Expression Hoisting



Consider:




CODE
greet();

var greet = function()
{
console.log("Hello");
};









Output






CODE
TypeError: greet is not a function






Internally:




CODE
var greet;

greet();

greet = function()
{
console.log("Hello");
};






At the time of function call:




CODE
greet = undefined






Thus:




CODE
undefined()






causes an error.









Arrow Function Hoisting






CODE
hello();

const hello = () => {
console.log("Hi");
};









Output






CODE
ReferenceError






Since const variables remain inside the Temporal Dead Zone, the function cannot be accessed before initialization.









Hoisting Comparison Table











































Declaration Type Hoisted Initial Value
var Yes undefined
let Yes TDZ
const Yes TDZ
Function Declaration Yes Entire Function
Function Expression Variable only undefined
Arrow Function Variable only TDZ








Hoisting vs Undefined



Many beginners confuse these two terms.






Hoisting



The process of allocating memory before execution.






Undefined



The default value assigned to variables declared using var.



Example:




CODE
console.log(num);

var num = 100;






Output:




CODE
undefined






because internally:




CODE
var num;

console.log(num);

num = 100;












Why Does JavaScript Use Hoisting?



JavaScript separates:




  1. Memory allocation

  2. Code execution



This design provides flexibility and supports features like recursion and function reuse.









Advantages of Hoisting






1. Allows Function Calls Before Declaration






CODE
greet();

function greet()
{
console.log("Hello");
}






Output:




CODE
Hello












2. Supports Recursion






CODE
function factorial(n)
{
if(n === 1)
return 1;

return n * factorial(n - 1);
}






Because the function already exists in memory, it can call itself.









3. Improves Code Organization



Example:




CODE
main();

function main()
{
greet();
}

function greet()
{
console.log("Welcome");
}






Functions can be organized logically without worrying about order.









Should We Rely on Hoisting?



Generally, No.



Although this works:




CODE
greet();

function greet()
{
console.log("Hello");
}






it is better to write:




CODE
function greet()
{
console.log("Hello");
}

greet();






This improves:




  • Readability

  • Maintainability

  • Debugging









Common Interview Questions






Is let hoisted?



Yes.



But it remains inside the Temporal Dead Zone.









Is const hoisted?



Yes.



Like let, it stays in the Temporal Dead Zone.









Are functions hoisted?



Function declarations are completely hoisted.









Are arrow functions hoisted?



No.



Only the variable declaration is hoisted.









Why does var print undefined?



Because var variables are initialized with undefined during memory creation.









Difference Between Hoisting and Undefined
























Hoisting Undefined
Memory allocation process Default value assigned to var variables
Happens before execution Seen during execution
Applies to variables and functions Applies only to variables








Tips



✔ Declare variables before using them.



✔ Prefer let and const over var.



✔ Do not intentionally depend on hoisting.



✔ Write function declarations before function calls for better readability.



✔ Use meaningful variable names.









Summary




  • Hoisting is JavaScript's memory allocation behavior.

  • Variables declared with var are initialized with undefined.


  • let and const are hoisted but remain inside the Temporal Dead Zone.

  • Function declarations are fully hoisted.

  • Function expressions and arrow functions are not completely hoisted.

  • Hoisting improves flexibility, but relying on it is not recommended.






Reference





Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
1 Quelle
Hackers Just Poisoned the Rust Supply Chain | Threat Wire
1 Quelle
Hackers Found a Way Into Humanoid Robots | Threat Wire
1 Quelle
Bits und so #1021 (Passwort für Laufwerk)
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Decoding Hoisting in JS

Thematisch verwandte Begriffe: Decoding, Hoisting · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...