JavaScript hatókör


Tartalomjegyzék

    Tartalomjegyzék megjelenítése

A hatókör határozza meg a változók elérhetőségét (láthatóságát).

A JavaScript 3 típusú hatókörrel rendelkezik:

  • Hatókör blokkolása

  • Funkció hatóköre

  • Globális hatókör

Blokk hatóköre

Az ES6 (2015) előtt a JavaScriptnek csak Globális hatóköre és Funkcióköre volt.

Az ES6 két fontos új JavaScript-kulcsszót vezetett be: let és const.

Ez a két kulcsszó biztosítja a Block Scope-t a JavaScriptben.

A { } blokkon belül deklarált változókhoz nem lehet hozzáférni a blokkon kívülről:

Példa

{ 
  let x = 2;
  }
// x can NOT be used here

A var kulcsszóval deklarált változóknak NEM lehet blokk hatóköre.

A { } blokkon belül deklarált változók innen érhetők el blokkon kívül.

Példa

{ 
  var x = 2; 
  }
// x CAN be used here

Helyi hatály

A JavaScript-függvényen belül deklarált változók lesz HELYIre a funkció.

Példa

// code here can NOT use carName
function myFunction() {
  let carName = "Volvo";
  // code here CAN use carName
}
  
// code here can NOT use carName

Próbálja ki Ön is →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Scope</h2>

<p><b>carName</b> is undefined outside myFunction():</p>

<p id="demo1"></p>

<p id="demo2"></p>

<script>
myFunction();

function myFunction() {
  let carName = "Volvo";
  document.getElementById("demo1").innerHTML = typeof carName + " " + carName;
}

document.getElementById("demo2").innerHTML = typeof carName;
</script>

</body>
</html>

A helyi változók Funkciókörrel rendelkeznek:

Csak a funkción belül érhetők el.

Mivel a lokális változókat csak a függvényeiken belül ismeri fel a rendszer, az azonos nevű változók különböző függvényekben használhatók.

A helyi változók a függvény indításakor jönnek létre, és a függvény befejezésekor törlődnek.


Funkció hatóköre

A JavaScript funkció hatókörrel rendelkezik: Minden függvény új hatókört hoz létre.

A függvényen belül meghatározott változók nem érhetők el (láthatók) a függvényen kívülről funkció.

A var, let paraméterekkel deklarált változók és const nagyon hasonló, ha egy függvényen belül deklaráljuk.

Mindegyikük rendelkezik Funkciókörrel:

function myFunction() {
    var carName = "Volvo";   
  // Function Scope
}
function myFunction() {
    let carName = "Volvo";   // 
  Function Scope
}
function myFunction() {
    const carName = "Volvo";   // 
  Function Scope
}

Globális JavaScript-változók

A függvényen kívül deklarált változó GLOBÁLIS lesz.

Példa

let carName = "Volvo";
// code here can use carName

function myFunction() {
// code here can also use carName 
}

Próbálja ki Ön is →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Scope</h2>

<p>A GLOBAL variable can be accessed from any script or function.</p>

<p id="demo"></p>

<script>
let carName = "Volvo";
myFunction();

function myFunction() {
  document.getElementById("demo").innerHTML = "I can display " + carName;
}
</script>

</body>
</html>


Egy globális változó Globális hatóköre:

A weboldalon található összes szkript és funkció hozzáférhet hozzá.


Globális hatókör

A Globálisan (bármely függvényen kívül) deklarált változók rendelkeznek Globális hatókör.

A globális változók bárhonnan elérhetők egy JavaScript-programban.

A var, let paraméterekkel deklarált változók és const elég hasonló, ha blokkon kívül deklaráljuk.

Mindegyik rendelkezik globális hatókörrel:

var x = 2;       
  // Global scope
 let x = 2;       // 
  Global scope
 const x = 2;       // 
  Global scope

JavaScript-változók

A JavaScriptben az objektumok és a függvények is változók.

A hatókör határozza meg a változók, objektumok és függvények elérhetőségét a kód különböző részei.



Automatikusan globális

Ha értéket rendel egy olyan változóhoz, amely nincs deklarálva, az automatikusan GLOBÁLIS változó lesz.

Ez a kódpélda egy globális carName változót deklarál, még akkor is, ha az érték egy függvényen belül van hozzárendelve.

Példa

myFunction();
// code here can use carName
 
function myFunction() {
    carName = "Volvo";
}

Próbálja ki Ön is →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Global Variables</h2>
<p>If you assign a value to a variable that has not been declared, it will automatically become a GLOBAL variable:</p>

<p id="demo"></p>

<script>
myFunction();
// code here can use carName as a global variable
document.getElementById("demo").innerHTML = "I can display " + carName;

function myFunction() {
  carName = "Volvo";
}
</script>

</body>
</html>

Szigorú mód

Minden modern böngésző támogatja a JavaScript "Strict Mode" futtatását.

Az oktatóanyag egy későbbi fejezetében többet megtudhat a szigorú mód használatáról.

A "szigorú módban" a nem deklarált változók nem automatikusan globálisak.


Globális változók a HTML-ben

A JavaScript esetében a globális hatókör a JavaScript környezet.

A HTML-ben a globális hatókör az ablak objektum.

A var kulcsszóval meghatározott globális változók az ablak objektumhoz tartoznak:

Példa

var carName = "Volvo";
// code here 
 can use window.carName

Próbálja ki Ön is →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Scope</h2>

<p>In HTML, global variables defined with <b>var</b>, will become window variables.</p>

<p id="demo"></p>

<script>
var carName = "Volvo";

// code here can use window.carName
document.getElementById("demo").innerHTML = "I can display " + window.carName;
</script>

</body>
</html>


A let kulcsszóval meghatározott globális változók nem tartoznak az ablak objektumhoz:

Példa

let carName = "Volvo";
// code here can not use window.carName

Próbálja ki Ön is →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Global Variables</h2>

<p>In HTML, global variables defined with <b>let</b>, will not become window variables.</p>

<p id="demo"></p>

<script>
let carName = "Volvo";

// code here can not use window.carName
document.getElementById("demo").innerHTML = "I can not display " + window.carName;
</script>

</body>
</html>

Figyelem

NE hozzon létre globális változókat, hacsak nem szándékozik.

Globális változói (vagy függvényei) felülírhatják az ablakváltozókat (vagy functions).
Bármelyik függvény, beleértve az ablakobjektumot is, felülírhatja a globális változók és függvények.


A JavaScript-változók élettartama

A JavaScript-változó élettartama akkor kezdődik, amikor deklarálják.

A függvény (helyi) változók törlődnek, amikor a funkció befejeződött.

Egy webböngészőben a globális változók törlődnek a böngésző bezárásakor ablak (vagy fül).


A függvény argumentumai

A függvény argumentumai (paraméterei) helyi változóként működnek a függvényeken belül.