forked from workshopper/javascripting
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Gudmundur Mar Gunnarsson
committed
Jun 1, 2016
1 parent
9185617
commit 39c6e3f
Showing
2 changed files
with
81 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,72 @@ | ||
`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 `` ` | ||
`Gildissvið` ***(Scope)*** er samansafn af breytum ***(variables)***, hlutum ***(objects)***, og föllum ***(functions)*** sem þú hefur aðgang að. | ||
|
||
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. | ||
|
||
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)***. | ||
|
||
Skoðaðu vel athugasemdirnar í kóðanum hér fyrir neðan: | ||
|
||
```js | ||
var a = 4; // a er víðvær breyta. Hún er aðgengileg úr föllunum hér fyrir neðan | ||
|
||
function foo() { | ||
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 | ||
// föllum skilgreindum innan foo | ||
function bar(c) { | ||
var b = 2; // Hér er önnur `b` breyta er skilgreind innan gildissviðs bar fallsins | ||
// Breytingarnar á þessari nýju breytu `b` hafa ekki áhrif á gömlu `b` breytuna | ||
console.log( a, b, c ); | ||
} | ||
|
||
bar(b * 4); | ||
} | ||
|
||
foo(); // 4, 2, 48 | ||
``` | ||
IIFE, Immediately Invoked Function Expression, er algengt mynstur þegar skapaðar eru staðbundin gildissvið, dæmi: | ||
```js | ||
(function(){ // Function segðin (expression) er umvafin hornklofum. | ||
// Breytur sem eru skilgreindar hér | ||
// er ekki hægt að nálgast utan frá. | ||
})(); // () gerir að verkum að fallið er keyrt samstundis | ||
``` | ||
|
||
## Verkefnið: | ||
|
||
Búðu til skrá sem heitir `scope.js`. | ||
|
||
Í þeirri skrá skaltu afrita eftirfarandi kóða: | ||
|
||
```js | ||
var a = 1, b = 2, c = 3; | ||
|
||
(function firstFunction(){ | ||
var b = 5, c = 6; | ||
|
||
(function secondFunction(){ | ||
var b = 8; | ||
|
||
(function thirdFunction(){ | ||
var a = 7, c = 9; | ||
|
||
(function fourthFunction(){ | ||
var a = 1, c = 8; | ||
|
||
})(); | ||
})(); | ||
})(); | ||
})(); | ||
``` | ||
|
||
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` | ||
|
||
```js | ||
console.log("a: "+a+", b: "+b+", c: "+c); | ||
``` | ||
|
||
Athugaðu hvort forritið sé rétt með því að keyra eftirfarandi skipun: | ||
|
||
```bash | ||
javascripting verify scope.js | ||
``` | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,9 @@ | ||
--- #EXCELLENT! Þú fékkst það! Annað fall hefur svigrúm við vorum að leita að. Hlaupa javascripting í vélinni til að velja næsta áskorun. --- | ||
--- | ||
|
||
#FRÁBÆRT! | ||
|
||
Þú náðir því! Annað fallið geymir gildissviðið sem við vorum að fiska eftir. | ||
|
||
Keyrðu javascripting í stjórnstöðinni (console) til að velja næstu áskorun. | ||
|
||
--- |