|
1 |
| -`Scope` er sett af breytum, hlutir, og aðgerðir sem þú hefur aðgang að. JavaScript er með tvö mælar: `global` og` local`. Breyta sem er lýst utan skilgreiningu fall er `global` breyta, og gildi þess er aðgengileg og modifiable um program. Breyta sem er lýst inni skilgreiningu fall er `local`. Það er búið og eytt í hvert skipti sem virka er keyrð, og það er ekki hægt að nálgast með því hvaða kóða utan virka. Aðgerðir skilgreindar inni aðrar aðgerðir, þekktur sem hreiður virka, hafa aðgang að umfang móðurfélags hlutverk þeirra er. Borga eftirtekt til the athugasemd í kóðanum hér fyrir neðan: `` `JS Var a = 4; // A er a global breyta, það er hægt að nálgast með því að virka fyrir neðan virka foo () {var b = a * 3; // B er ekki hægt að nálgast utan foo virka, en hægt er að nálgast með því að virka // skilgreint inni foo virka bar (c) {var b = 2; // Annar `b` breyta er búin inni umfangi Bar virka // breytingar á þessari nýju` b` breytu hefur ekki áhrif á gamla `b` breytilegum console.log (a, b, c); } Bar (b * 4); } Foo (); // 4, 2, 48 `` `IIFE, Strax skírskotað Virka Expression, er algengt mynstur til að skapa staðbundna mælar dæmi:` `` JS (virka () {// virka tjáning er umkringdur sviga // breytur skilgreindar hér // ekki er hægt að nálgast utan}) (); // Virka strax skírskotað `` `## Áskorunin: Búa til skrá sem heitir` scope.js`. Í þeirri skrá, afrita eftirfarandi kóða: `` `JS VAR a = 1, b = 2, C = 3; (Virka firstFunction () {var b = 5, c = 6; (virka secondFunction () {var b = 8; (virka thirdFunction () {var a = 7, c = 9; (virka fourthFunction () {var a = 1, c = 8;}) ();}) ();}) ();}) (); `` `Notaðu þekkingu þína á breytum '` scope` og setja eftirfarandi kóða inni einn af störfum í `scope.js` þannig að framleiðsla er` a: 1, b: 8, c: 6` `` `js console.log ( "a:" + a + ", b:" + b + ", c:" + c); `` `Athugaðu að sjá hvort forritið sé rétt með því að keyra þessa skipun:` `` bash javascripting staðfesta scope.js `` ` |
| 1 | +`Gildissvið` ***(Scope)*** er samansafna af breytum ***(variables)***, hlutum ***(objects)***, og föllum ***(functions)*** sem þú hefur aðgang að. |
| 2 | + |
| 3 | +Javascript hefur tvö gilissvið: `víðvært` ***(global)*** og `staðvært` ***(local)***. Breyta sem er skilgreind ***(declared)*** utan falls er `víðvær` breyta, og gildi þess er aðgengilegt og breytanlegt í öllu forritinu þínu. Breyta sem er skilgreind inni í falli er `staðvær`. Hún er búin til og henni eytt í hvert skipti sem fall er keyrt og ekki hægt að nálgast hana úr kóða utan fallsins. |
| 4 | + |
| 5 | +Föll skilgreind inni í öðrum föllum eru þekkt sem földuð föll ***(nested functions)*** og hafa aðgang að gildisviði ytra fallsins ***(parent function's scope)***. |
| 6 | + |
| 7 | +Skoðaðu vel athugasemdirnar í kóðanum hér fyrir neðan: |
| 8 | + |
| 9 | +```js |
| 10 | +var a = 4; // a er víðvær breyta. Hún er aðgengileg úr föllunum hér fyrir neðan |
| 11 | + |
| 12 | +function foo() { |
| 13 | + var b = a * 3; // b er ekki hægt að nálgast fyrir utan foo fallið en hægt er að nálgast b úr |
| 14 | + // föllum skilgreindum innan foo |
| 15 | + function bar(c) { |
| 16 | + var b = 2; // Hér er önnur `b` breyta er skilgreind innan gildissviðs bar fallsins |
| 17 | + // Breytingarnar á þessari nýju breytu `b` hafa ekki áhrif á gömlu `b` breytuna |
| 18 | + console.log( a, b, c ); |
| 19 | + } |
| 20 | + |
| 21 | + bar(b * 4); |
| 22 | +} |
| 23 | + |
| 24 | +foo(); // 4, 2, 48 |
| 25 | +``` |
| 26 | +IIFE, Immediately Invoked Function Expression, er algengt mynstur þegar skapaðar eru staðbundin gildissvið, dæmi: |
| 27 | +```js |
| 28 | + (function(){ // Function segðin (expression) er umvafin hornklofum. |
| 29 | + // Breytur sem eru skilgreindar hér |
| 30 | + // er ekki hægt að nálgast utan frá. |
| 31 | + })(); // () gerir að verkum að fallið er keyrt samstundis |
| 32 | +``` |
| 33 | + |
| 34 | +## Verkefnið: |
| 35 | + |
| 36 | +Búðu til skrá sem heitir `scope.js`. |
| 37 | + |
| 38 | +Í þeirri skrá skaltu afrita eftirfarandi kóða: |
| 39 | + |
| 40 | +```js |
| 41 | +var a = 1, b = 2, c = 3; |
| 42 | + |
| 43 | +(function firstFunction(){ |
| 44 | + var b = 5, c = 6; |
| 45 | + |
| 46 | + (function secondFunction(){ |
| 47 | + var b = 8; |
| 48 | + |
| 49 | + (function thirdFunction(){ |
| 50 | + var a = 7, c = 9; |
| 51 | + |
| 52 | + (function fourthFunction(){ |
| 53 | + var a = 1, c = 8; |
| 54 | + |
| 55 | + })(); |
| 56 | + })(); |
| 57 | + })(); |
| 58 | +})(); |
| 59 | +``` |
| 60 | + |
| 61 | +Notaðu þekkingu þína á breytum `gildissviðsins` og settu eftirfarandi kóða inn í eitt af föllunum í `scope.js` þannig að úttakið verði `a: 1, b: 8, c: 6` |
| 62 | + |
| 63 | +```js |
| 64 | +console.log("a: "+a+", b: "+b+", c: "+c); |
| 65 | +``` |
| 66 | + |
| 67 | +Athugaðu hvort forritið sé rétt með því að keyra eftirfarandi skipun: |
| 68 | + |
| 69 | +```bash |
| 70 | +javascripting verify scope.js |
| 71 | +``` |
| 72 | + |
0 commit comments