From f6cea9474184fb2e503b6a0bfd7d28ae96f17053 Mon Sep 17 00:00:00 2001 From: Pepo Viola Date: Mon, 11 May 2015 20:06:53 -0300 Subject: [PATCH 1/2] add spanish translation for scope --- problems/scope/problem_es.md | 69 +++++++++++++++++++++++++++++++++++ problems/scope/solution_es.md | 8 ++++ 2 files changed, 77 insertions(+) create mode 100644 problems/scope/problem_es.md create mode 100644 problems/scope/solution_es.md diff --git a/problems/scope/problem_es.md b/problems/scope/problem_es.md new file mode 100644 index 00000000..d139dde7 --- /dev/null +++ b/problems/scope/problem_es.md @@ -0,0 +1,69 @@ +--- + +# SCOPE ( AMBITO ) + +El `scope` o ámbito es el conjunto de variables, objetos y funciones a las que tienes acceso. + +JavaScript tiene dos ámbitos: `global` y `local`. Una variable que es declarada fuera de la definición de una función es una variable `global`, y su valor es accesible y modificable a través de tu programa. Una variable que es declarada dentro de la definición de una función es una variable `local`. Se crea y se destruye cada vez que se ejecuta la función, y no se puede acceder a su valor ni modificarlo por ningún código fuera de la misma. + +Las funciones definidas dentro de otras funciones, conocidas como funciones anidadas, tienen acceso al ámbito de su función padre. + +Presta atención a los comentarios en el siguiente código: + +```js +var a = 4; // es una variable global, puede ser accedida por las siguientes funciones + +function foo() { + var b = a * 3; // b no puede ser accedida por fuera de la función foo, pero puede ser accedida + // por las funciones definidas dentro de foo + function bar(c) { + var b = 2; // otra variable `b` es creada dentro del ámbito de la función bar + // los cambios a esta nueva `b` no afectan a la vieja variable `b` + console.log( a, b, c ); + } + + bar(b * 4); +} + +foo(); // 4, 2, 48 +``` +IIFE, Immediately Invoked Function Expression( Expresión de Functión Invocada Inmediatamente ), es un patrón común para crear ámbitos locales. +Por ejemplo: +```js + (function(){ // La expresión de la función está entre parentesis + // las variables definidas aquí + // no pueden ser accedidas por fuera + })(); // la función es inmediatamente invocada +``` +## El ejercicio: + +Crea un archivo llamado `scope.js`. + +En ese archivo, copia el siguiente código: +```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; + + })(); + })(); + })(); +})(); +``` + +Usa tu conocimiento sobre el ámbito de las variables y ubica el siguiente código dentro de alguna de las funciones +en `scope.js` para que la salida sea `a: 1, b: 8,c: 6` +```js +console.log("a: "+a+", b: "+b+",c: "+c); +``` +--- \ No newline at end of file diff --git a/problems/scope/solution_es.md b/problems/scope/solution_es.md new file mode 100644 index 00000000..62692356 --- /dev/null +++ b/problems/scope/solution_es.md @@ -0,0 +1,8 @@ +--- + +#EXCELENTE! + +Lo hiciste! La segunda función tiene el ámbito que estabamos buscando. + +Ejecuta `javascripting` en la consola para seleccionar el siguiente ejercicio. +--- From 52da67ee18e21c14c740dc0b1909719b3c1479b5 Mon Sep 17 00:00:00 2001 From: Pepo Viola Date: Mon, 11 May 2015 23:39:24 -0300 Subject: [PATCH 2/2] fix typo --- problems/scope/problem_es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/problems/scope/problem_es.md b/problems/scope/problem_es.md index d139dde7..51b6cb7c 100644 --- a/problems/scope/problem_es.md +++ b/problems/scope/problem_es.md @@ -30,7 +30,7 @@ foo(); // 4, 2, 48 IIFE, Immediately Invoked Function Expression( Expresión de Functión Invocada Inmediatamente ), es un patrón común para crear ámbitos locales. Por ejemplo: ```js - (function(){ // La expresión de la función está entre parentesis + (function(){ // La expresión de la función está entre paréntesis // las variables definidas aquí // no pueden ser accedidas por fuera })(); // la función es inmediatamente invocada