From b7007ec55ea22e7b412e94d2cfb4e6c4a720d615 Mon Sep 17 00:00:00 2001 From: vplentinax Date: Mon, 11 May 2020 21:52:13 -0400 Subject: [PATCH 01/37] function-object --- .../2-counter-inc-dec/solution.md | 2 +- .../2-counter-inc-dec/task.md | 14 +- .../5-sum-many-brackets/solution.md | 24 +-- .../5-sum-many-brackets/task.md | 6 +- .../06-function-object/article.md | 175 +++++++++--------- 5 files changed, 111 insertions(+), 110 deletions(-) diff --git a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/solution.md b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/solution.md index e829d96ee..c0aca5306 100644 --- a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/solution.md +++ b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/solution.md @@ -1,2 +1,2 @@ -The solution uses `count` in the local variable, but addition methods are written right into the `counter`. They share the same outer lexical environment and also can access the current `count`. +La solución usa `count` en la variable local, pero los métodos de suma se escriben directamente en el `counter`. Comparten el mismo entorno léxico externo y también pueden acceder al `count` actual. diff --git a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md index 0177c8f6e..5e78ed2b9 100644 --- a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md +++ b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md @@ -2,14 +2,14 @@ importance: 5 --- -# Set and decrease for counter +# Establecer y disminuir un contador -Modify the code of `makeCounter()` so that the counter can also decrease and set the number: +Modifique el código de `makeCounter ()` para que el contador también pueda disminuir y establecer el número: -- `counter()` should return the next number (as before). -- `counter.set(value)` should set the `count` to `value`. -- `counter.decrease()` should decrease the `count` by 1. +- `counter()` debería devolver el siguiente número (como antes). +- `counter.set(value)` debería establecer el contador para `value`. +- `counter.decrease()` debería disminuir el contador en 1. -See the sandbox code for the complete usage example. +Consulte el código de sandbox para ver el ejemplo de uso completo. -P.S. You can use either a closure or the function property to keep the current count. Or write both variants. +P.D Puede usar un cierre o la propiedad de función para mantener el recuento actual. O escribe ambas variantes. diff --git a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md index 5c9326912..e241cf40c 100644 --- a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md +++ b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md @@ -1,9 +1,9 @@ -1. For the whole thing to work *anyhow*, the result of `sum` must be function. -2. That function must keep in memory the current value between calls. -3. According to the task, the function must become the number when used in `==`. Functions are objects, so the conversion happens as described in the chapter , and we can provide our own method that returns the number. +1. Para que todo funcione *de cualquier forma*, el resultado de `sum` debe ser una función. +2. Esa función debe mantener en la memoria el valor actual entre llamadas. +3. Según la tarea, la función debe convertirse en el número cuando se usa en `==`. Las funciones son objetos, por lo que la conversión se realiza como se describe en el capítulo , y podemos proporcionar nuestro propio método para devolver el número. -Now the code: +Ahora el código: ```js run function sum(a) { @@ -28,28 +28,28 @@ alert( sum(6)(-1)(-2)(-3) ); // 0 alert( sum(0)(1)(2)(3)(4)(5) ); // 15 ``` -Please note that the `sum` function actually works only once. It returns function `f`. +Tenga en cuenta que la función `sum` en realidad solo funciona una vez. Devuelve la función `f`. -Then, on each subsequent call, `f` adds its parameter to the sum `currentSum`, and returns itself. +Luego, en cada llamada posterior, `f` agrega su parámetro a la suma` currentSum`, y se devuelve. -**There is no recursion in the last line of `f`.** +**No hay recursividad en la última línea de `f`.** -Here is what recursion looks like: +Así es como se ve la recursividad: ```js function f(b) { currentSum += b; - return f(); // <-- recursive call + return f(); // <-- llamada recursiva } ``` -And in our case, we just return the function, without calling it: +Y en nuestro caso, solo devolvemos la función, sin llamarla: ```js function f(b) { currentSum += b; - return f; // <-- does not call itself, returns itself + return f; // <-- no se llama a sí mismo, se devuelve } ``` -This `f` will be used in the next call, again return itself, so many times as needed. Then, when used as a number or a string -- the `toString` returns the `currentSum`. We could also use `Symbol.toPrimitive` or `valueOf` here for the conversion. +Esta `f` se usará en la próxima llamada, nuevamente se devolverá, tantas veces como sea necesario. Luego, cuando se usa como un número o una cadena, el `toString` devuelve el `currentSum`. También podríamos usar `Symbol.toPrimitive` o `valueOf` para la conversión. diff --git a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/task.md b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/task.md index dc13f260b..2b41d78c5 100644 --- a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/task.md +++ b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/task.md @@ -2,9 +2,9 @@ importance: 2 --- -# Sum with an arbitrary amount of brackets +# Suma con una cantidad arbitraria de paréntesis -Write function `sum` that would work like this: +Escriba la función `sum` que funcionaría así: ```js sum(1)(2) == 3; // 1 + 2 @@ -14,4 +14,4 @@ sum(6)(-1)(-2)(-3) == 0 sum(0)(1)(2)(3)(4)(5) == 15 ``` -P.S. Hint: you may need to setup custom object to primitive conversion for your function. \ No newline at end of file +P.D Sugerencia: es posible que deba configurar un objeto personalizado para una conversión primitiva para su función. diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 37839779c..2f83adad3 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -1,20 +1,20 @@ -# Function object, NFE +# Función como objeto, NFE -As we already know, functions in JavaScript are values. +Como ya sabemos, una función en JavaScript es un valor. -Every value in JavaScript has a type. What type is a function? +Cada valor en JavaScript tiene un tipo. ¿Qué tipo es una función? -In JavaScript, functions are objects. +En JavaScript, las funciones son objetos. -A good way to imagine functions is as callable "action objects". We can not only call them, but also treat them as objects: add/remove properties, pass by reference etc. +Una buena manera de imaginar funciones es como "objetos de acción" invocables. No solo podemos llamarlos, sino también tratarlos como objetos: agregar / eliminar propiedades, pasar por referencia, etc. -## The "name" property +## La propiedad "name" -Function objects contain a few useable properties. +Las funciones como objeto contienen algunas propiedades utilizables. -For instance, a function's name is accessible as the "name" property: +Por ejemplo, el nombre de una función es accesible mediante la propiedad "name": ```js run function sayHi() { @@ -24,29 +24,29 @@ function sayHi() { alert(sayHi.name); // sayHi ``` -What's more funny, the name-assigning logic is smart. It also assigns the correct name to functions that are used in assignments: +Lo que es divertido, es que la lógica de asignación de nombres es inteligente. También da el nombre correcto a una función, incluso si se creó sin uno: ```js run let sayHi = function() { alert("Hi"); -} +}; -alert(sayHi.name); // sayHi (works!) +alert(sayHi.name); // sayHi (hay un nombre!) ``` -It also works if the assignment is done via a default value: +También funciona si la asignación se realiza mediante un valor predeterminado: ```js run function f(sayHi = function() {}) { - alert(sayHi.name); // sayHi (works!) + alert(sayHi.name); // sayHi (¡funciona!) } f(); ``` -In the specification, this feature is called a "contextual name". If the function does not provide one, then in an assignment it is figured out from the context. +En la especificación, esta característica se denomina "nombre contextual". Si la función no proporciona una, entonces en una asignación se deduce del contexto. -Object methods have names too: +Los métodos como objeto también tienen nombres: ```js run let user = { @@ -65,21 +65,21 @@ alert(user.sayHi.name); // sayHi alert(user.sayBye.name); // sayBye ``` -There's no magic though. There are cases when there's no way to figure out the right name. In that case, the name property is empty, like here: +Sin embargo, no hay magia. Hay casos en que no hay forma de encontrar el nombre correcto. En ese caso, la propiedad de nombre está vacía, como aquí: -```js -// function created inside array +```js run +// función creada dentro de un array let arr = [function() {}]; alert( arr[0].name ); // -// the engine has no way to set up the right name, so there is none +// el motor no tiene forma de configurar el nombre correcto, por lo que no asigna ninguno ``` -In practice, however, most functions do have a name. +En la práctica, sin embargo, la mayoría de las funciones tienen un nombre. -## The "length" property +## La propiedad "length" -There is another built-in property "length" that returns the number of function parameters, for instance: +Hay una nueva propiedad "length" incorporada que devuelve el número de parámetros de una función, por ejemplo: ```js run function f1(a) {} @@ -91,20 +91,20 @@ alert(f2.length); // 2 alert(many.length); // 2 ``` -Here we can see that rest parameters are not counted. +Aquí podemos ver que los *parámetros rest* no se cuentan:. -The `length` property is sometimes used for introspection in functions that operate on other functions. +La propiedad `length` a veces se usa para [introspección](https://en.wikipedia.org/wiki/Type_introspection) en funciones que operan en otras funciones.. -For instance, in the code below the `ask` function accepts a `question` to ask and an arbitrary number of `handler` functions to call. +Por ejemplo, en el siguiente código, la función `ask` , acepta una` question` y un número arbitrario de funciones `handler` para llamar. -Once a user provides their answer, the function calls the handlers. We can pass two kinds of handlers: +Una vez que un usuario proporciona su respuesta, la función llama a los controladores. Podemos pasar dos tipos de controladores: -- A zero-argument function, which is only called when the user gives a positive answer. -- A function with arguments, which is called in either case and returns an answer. +- Una función de cero argumentos, que solo se llama cuando el usuario da una respuesta positiva. +- Una función con argumentos, que se llama en cualquier caso y devuelve una respuesta. -The idea is that we have a simple, no-arguments handler syntax for positive cases (most frequent variant), but are able to provide universal handlers as well. +Para llamar a `handler` de la manera correcta, examinamos la propiedad `handler.length`. -To call `handlers` the right way, we examine the `length` property: +La idea es que tenemos una sintaxis de controlador simple y sin argumentos para casos positivos (la variante más frecuente), pero también podemos admitir controladores universales: ```js run function ask(question, ...handlers) { @@ -120,47 +120,47 @@ function ask(question, ...handlers) { } -// for positive answer, both handlers are called -// for negative answer, only the second one +// para una respuesta positiva, ambos controladores se llaman +// para respuesta negativa, solo el segundo ask("Question?", () => alert('You said yes'), result => alert(result)); ``` -This is a particular case of so-called [polymorphism](https://en.wikipedia.org/wiki/Polymorphism_(computer_science)) -- treating arguments differently depending on their type or, in our case depending on the `length`. The idea does have a use in JavaScript libraries. +Este es un caso particular llamado [polimorfismo](https://en.wikipedia.org/wiki/Polymorphism_(computer_science)) --tratar los argumentos de manera diferente según su tipo o, en nuestro caso, según la 'longitud'. La idea tiene un uso en las bibliotecas de JavaScript. -## Custom properties +## Propiedades personalizadas -We can also add properties of our own. +También podemos agrega nuestras propias propiedades. -Here we add the `counter` property to track the total calls count: +Aquí agregamos la propiedad `counter` para rastrear el recuento total de llamadas ```js run function sayHi() { alert("Hi"); *!* - // let's count how many times we run + //vamos a contar sayHi.counter++; */!* } -sayHi.counter = 0; // initial value +sayHi.counter = 0; // valor inicial sayHi(); // Hi sayHi(); // Hi -alert( `Called ${sayHi.counter} times` ); // Called 2 times +alert( `Called ${sayHi.counter} times` ); // Llamamos 2 times ``` -```warn header="A property is not a variable" -A property assigned to a function like `sayHi.counter = 0` does *not* define a local variable `counter` inside it. In other words, a property `counter` and a variable `let counter` are two unrelated things. +```warn header="Una propiedad no es una variable." +La propiedad asignada a una función como `sayHi.counter = 0` *no* define una variable local `counter` dentro de ella. En otras palabras, una propiedad `counter` y una variable `let counter` son dos cosas no relacionadas. -We can treat a function as an object, store properties in it, but that has no effect on its execution. Variables never use function properties and vice versa. These are just parallel worlds. +Podemos tratar una función como un objeto, almacenar propiedades en ella, pero eso no tiene ningún efecto en su ejecución. Las variables no son propiedades de la función y viceversa. Estos solo son dos mundos paralelos. ``` -Function properties can replace closures sometimes. For instance, we can rewrite the counter function example from the chapter to use a function property: +Las propiedades de la función a veces pueden reemplazar los cierres o *closures* . Por ejemplo, podemos reescribir el ejemplo de la función de contador del capítulo para usar una propiedad de función: ```js run function makeCounter() { - // instead of: + // en vez de: // let count = 0 function counter() { @@ -177,11 +177,11 @@ alert( counter() ); // 0 alert( counter() ); // 1 ``` -The `count` is now stored in the function directly, not in its outer Lexical Environment. +`Count` ahora se almacena en la función directamente, no en su entorno léxico externo. -Is it better or worse than using a closure? +¿Es mejor o peor que usar un cierre (*closure*)? -The main difference is that if the value of `count` lives in an outer variable, then external code is unable to access it. Only nested functions may modify it. And if it's bound to a function, then such a thing is possible: +La principal diferencia es que si el valor de `count` vive en una variable externa, entonces el código externo no puede acceder a él. Solo las funciones anidadas pueden modificarlo. Y si está vinculado a una función, entonces tal cosa es posible: ```js run function makeCounter() { @@ -203,13 +203,13 @@ alert( counter() ); // 10 */!* ``` -So the choice of implementation depends on our aims. +Por lo tanto, la elección de la implementación depende de nuestros objetivos. -## Named Function Expression +## Expresión de Función con Nombre -Named Function Expression, or NFE, is a term for Function Expressions that have a name. +*Named Function Expression*, o *NFE*, es un término para `Expresiones de funciones` que tienen un nombre. -For instance, let's take an ordinary Function Expression: +Por ejemplo, tomemos una expresión de función ordinaria: ```js let sayHi = function(who) { @@ -217,7 +217,7 @@ let sayHi = function(who) { }; ``` -And add a name to it: +Y agrégale un nombre: ```js let sayHi = function *!*func*/!*(who) { @@ -225,13 +225,13 @@ let sayHi = function *!*func*/!*(who) { }; ``` -Did we achieve anything here? What's the purpose of that additional `"func"` name? +¿Logramos algo aquí? ¿Cuál es el propósito de ese nombre adicional de "func"? -First let's note, that we still have a Function Expression. Adding the name `"func"` after `function` did not make it a Function Declaration, because it is still created as a part of an assignment expression. +Primero, tengamos en cuenta que todavía tenemos una `expresión de función`. Agregar el nombre `" func "` después de `function` no lo convirtió en una `declaración de función`, porque todavía se crea como parte de una expresión de asignación. -Adding such a name also did not break anything. +Agregar ese nombre tampoco rompió nada. -The function is still available as `sayHi()`: +La función todavía está disponible como `sayHi ()`: ```js run let sayHi = function *!*func*/!*(who) { @@ -241,12 +241,12 @@ let sayHi = function *!*func*/!*(who) { sayHi("John"); // Hello, John ``` -There are two special things about the name `func`: +Hay dos cosas especiales sobre el nombre `func`, que le hacen útil: -1. It allows the function to reference itself internally. -2. It is not visible outside of the function. +1. Permite que la función se haga referencia internamente. +2. No es visible fuera de la función.. -For instance, the function `sayHi` below calls itself again with `"Guest"` if no `who` is provided: +Por ejemplo, la función `sayHi` a continuación se vuelve a llamar a sí misma con ` "Guest" `si no se proporciona ` who`: ```js run let sayHi = function *!*func*/!*(who) { @@ -254,21 +254,21 @@ let sayHi = function *!*func*/!*(who) { alert(`Hello, ${who}`); } else { *!* - func("Guest"); // use func to re-call itself + func("Guest"); //usa func para volver a llamarse */!* } }; sayHi(); // Hello, Guest -// But this won't work: -func(); // Error, func is not defined (not visible outside of the function) +// Pero esto no funcionará. +func(); // Error, func no está definido (no visible fuera de la función) ``` -Why do we use `func`? Maybe just use `sayHi` for the nested call? +¿Por qué usamos `func`? ¿Quizás solo usa `sayHi` para la llamada anidada? -Actually, in most cases we can: +En realidad, en la mayoría de los casos podemos: ```js let sayHi = function(who) { @@ -282,7 +282,7 @@ let sayHi = function(who) { }; ``` -The problem with that code is that the value of `sayHi` may change. The function may go to another variable, and the code will start to give errors: +El problema con ese código es que `sayHi` puede cambiar en el código externo. Si la función se asigna a otra variable, el código comenzará a dar errores: ```js run let sayHi = function(who) { @@ -290,7 +290,7 @@ let sayHi = function(who) { alert(`Hello, ${who}`); } else { *!* - sayHi("Guest"); // Error: sayHi is not a function + sayHi("Guest"); // Error: sayHi no es una función */!* } }; @@ -298,14 +298,14 @@ let sayHi = function(who) { let welcome = sayHi; sayHi = null; -welcome(); // Error, the nested sayHi call doesn't work any more! +welcome(); // Error, ¡la llamada sayHi anidada ya no funciona! ``` -That happens because the function takes `sayHi` from its outer lexical environment. There's no local `sayHi`, so the outer variable is used. And at the moment of the call that outer `sayHi` is `null`. +Eso sucede porque la función toma `sayHi` de su entorno léxico externo. No hay `sayHi` local, por lo que se utiliza la variable externa. Y en el momento de la llamada, ese `sayHi` externo es ` nulo`. -The optional name which we can put into the Function Expression is meant to solve exactly these kinds of problems. +El nombre opcional que podemos poner en la Expresión de función está destinado a resolver exactamente este tipo de problemas. -Let's use it to fix our code: +Usémoslo para arreglar nuestro código: ```js run let sayHi = function *!*func*/!*(who) { @@ -313,7 +313,7 @@ let sayHi = function *!*func*/!*(who) { alert(`Hello, ${who}`); } else { *!* - func("Guest"); // Now all fine + func("Guest"); // Ahora todo va bien */!* } }; @@ -321,32 +321,33 @@ let sayHi = function *!*func*/!*(who) { let welcome = sayHi; sayHi = null; -welcome(); // Hello, Guest (nested call works) +welcome(); // Hello, Guest (la llamada anidada funciona) ``` -Now it works, because the name `"func"` is function-local. It is not taken from outside (and not visible there). The specification guarantees that it will always reference the current function. +Ahora funciona, porque el nombre `"func"` es una función local. No se toma desde el exterior (y no es visible allí). La especificación garantiza que siempre hará referencia a la función actual. -The outer code still has it's variable `sayHi` or `welcome`. And `func` is an "internal function name", how the function can call itself internally. +El código externo todavía tiene su variable `sayHi` o `welcome`. Y `func` es un "nombre de función interna ", porque la función puede llamarse internamente. -```smart header="There's no such thing for Function Declaration" -The "internal name" feature described here is only available for Function Expressions, not to Function Declarations. For Function Declarations, there's just no syntax possibility to add a one more "internal" name. +```smart header="No existe tal cosa para la `Declaración de funciones`" +La función de "nombre interno" descrita aquí solo está disponible para `Expresiones de funciones`, no para` Declaraciones de funciones`. Para las declaraciones de funciones, no hay sintaxis para agregar un nombre "interno". -Sometimes, when we need a reliable internal name, it's the reason to rewrite a Function Declaration to Named Function Expression form. +A veces, necesitamos un nombre interno confiable, este es un motivo para reescribir un formulario de `Declaración de funciones` en `Expresión de funciones` con nombre. ``` -## Summary +## Resumen + +Las funciones son objetos. -Functions are objects. +Aquí cubrimos sus propiedades: -Here we covered their properties: +- `name` -- El nombre de la función. Por lo general, se toma de la definición de la función, pero si no hay ninguno, JavaScript intenta adivinarlo por el contexto (por ejemplo, una asignación). +- `length` -- El número de argumentos en la definición de la función. Los *parámetros rest* no se cuentan. -- `name` -- the function name. Exists not only when given in the function definition, but also for assignments and object properties. -- `length` -- the number of arguments in the function definition. Rest parameters are not counted. +Si la función se declara como una Expresión de función (no en el flujo de código principal), y lleva el nombre, se llama Expresión de Función con Nombre *(Named Function Expression)*. El nombre se puede usar dentro para hacer referencia a sí mismo, para llamadas recursivas o similares. -If the function is declared as a Function Expression (not in the main code flow), and it carries the name, then it is called a Named Function Expression. The name can be used inside to reference itself, for recursive calls or such. +Además, las funciones pueden tener propiedades adicionales. Muchas bibliotecas de JavaScript conocidas hacen un gran uso de esta función. -Also, functions may carry additional properties. Many well-known JavaScript libraries make great use of this feature. +Crean una función "principal" y le asignan muchas otras funciones "auxiliares". Por ejemplo, la biblioteca [jQuery](https://jquery.com) crea una función llamada `$`. la biblioteca [lodash](https://lodash.com) crea una función `_`, y luego agrega `_.clone`, `_.keyBy` y otras propiedades (see the [docs](https://lodash.com/docs) cuando quieras aprender más sobre ello). En realidad, lo hacen para disminuir su contaminación del espacio global, de modo que una sola biblioteca proporciona solo una variable global. Eso reduce la posibilidad de nombrar conflictos. -They create a "main" function and attach many other "helper" functions to it. For instance, the [jquery](https://jquery.com) library creates a function named `$`. The [lodash](https://lodash.com) library creates a function `_`. And then adds `_.clone`, `_.keyBy` and other properties to (see the [docs](https://lodash.com/docs) when you want learn more about them). Actually, they do it to lessen their pollution of the global space, so that a single library gives only one global variable. That reduces the possibility of naming conflicts. -So, a function can do a useful job by itself and also carry a bunch of other functionality in properties. +Por lo tanto, una función puede hacer un trabajo útil por sí misma y también puede tener muchas otras funcionalidades en las propiedades. From a7b156baa10660c5927ce16c7709234fdc1bdb48 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:56:34 -0400 Subject: [PATCH 02/37] Update 1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/solution.md Co-authored-by: joaquinelio --- .../06-function-object/2-counter-inc-dec/solution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/solution.md b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/solution.md index c0aca5306..6e33180a3 100644 --- a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/solution.md +++ b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/solution.md @@ -1,2 +1,2 @@ -La solución usa `count` en la variable local, pero los métodos de suma se escriben directamente en el `counter`. Comparten el mismo entorno léxico externo y también pueden acceder al `count` actual. +La solución usa `count` en la variable local, pero los métodos de suma se escriben directamente en el `counter`. Comparten el mismo entorno léxico externo y también pueden acceder al `count` actual. From c595a8f0ea248b964a9418e10a07c0846322bd87 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:56:44 -0400 Subject: [PATCH 03/37] Update 1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md Co-authored-by: joaquinelio --- .../06-function-object/2-counter-inc-dec/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md index 5e78ed2b9..9e61bd1f3 100644 --- a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md +++ b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md @@ -2,7 +2,7 @@ importance: 5 --- -# Establecer y disminuir un contador +# Establecer y disminuir un contador Modifique el código de `makeCounter ()` para que el contador también pueda disminuir y establecer el número: From 56cd26b5ca3895c201a740e844c7c3b4a7280f8c Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:56:55 -0400 Subject: [PATCH 04/37] Update 1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md Co-authored-by: joaquinelio --- .../06-function-object/2-counter-inc-dec/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md index 9e61bd1f3..59822144a 100644 --- a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md +++ b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md @@ -4,7 +4,7 @@ importance: 5 # Establecer y disminuir un contador -Modifique el código de `makeCounter ()` para que el contador también pueda disminuir y establecer el número: +Modifique el código de `makeCounter()` para que el contador también pueda disminuir y establecer el número: - `counter()` debería devolver el siguiente número (como antes). - `counter.set(value)` debería establecer el contador para `value`. From 2392a384b003d469a50930cd8b80287d0e2d5408 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:57:03 -0400 Subject: [PATCH 05/37] Update 1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md Co-authored-by: joaquinelio --- .../06-function-object/2-counter-inc-dec/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md index 59822144a..400190249 100644 --- a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md +++ b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md @@ -7,7 +7,7 @@ importance: 5 Modifique el código de `makeCounter()` para que el contador también pueda disminuir y establecer el número: - `counter()` debería devolver el siguiente número (como antes). -- `counter.set(value)` debería establecer el contador para `value`. +- `counter.set(value)` debería establecer el contador a `value`. - `counter.decrease()` debería disminuir el contador en 1. Consulte el código de sandbox para ver el ejemplo de uso completo. From d822e877cd18959f773fcb4a0a0e08a162a6b5a3 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:57:12 -0400 Subject: [PATCH 06/37] Update 1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md Co-authored-by: joaquinelio --- .../06-function-object/2-counter-inc-dec/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md index 400190249..5a208b49d 100644 --- a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md +++ b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md @@ -12,4 +12,4 @@ Modifique el código de `makeCounter()` para que el contador también pueda dism Consulte el código de sandbox para ver el ejemplo de uso completo. -P.D Puede usar un cierre o la propiedad de función para mantener el recuento actual. O escribe ambas variantes. +P.D. Puedes usar un cierre o la propiedad de función para mantener el recuento actual. O escribe ambas variantes. From f8bcc8a0b2f5d71baf076c0e62a877e39ead6ac6 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:57:25 -0400 Subject: [PATCH 07/37] Update 1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md Co-authored-by: joaquinelio --- .../06-function-object/5-sum-many-brackets/solution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md index e241cf40c..0905656dc 100644 --- a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md +++ b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md @@ -52,4 +52,4 @@ function f(b) { } ``` -Esta `f` se usará en la próxima llamada, nuevamente se devolverá, tantas veces como sea necesario. Luego, cuando se usa como un número o una cadena, el `toString` devuelve el `currentSum`. También podríamos usar `Symbol.toPrimitive` o `valueOf` para la conversión. +Esta `f` se usará en la próxima llamada, nuevamente se devolverá, tantas veces como sea necesario. Luego, cuando se usa como un número o una cadena, el `toString` devuelve el `currentSum`. También podríamos usar `Symbol.toPrimitive` o `valueOf` para la conversión. From 3f55e49fb50f47d13c45440ff1b84398fa816035 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:57:34 -0400 Subject: [PATCH 08/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 0b1ca12f2..9a110b2dd 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -246,7 +246,7 @@ Hay dos cosas especiales sobre el nombre `func`, que le hacen útil: 1. Permite que la función se haga referencia internamente. 2. No es visible fuera de la función.. -Por ejemplo, la función `sayHi` a continuación se vuelve a llamar a sí misma con ` "Guest" `si no se proporciona ` who`: +Por ejemplo, la función `sayHi` a continuación se vuelve a llamar a sí misma con `"Guest" ` si no se proporciona `who`: ```js run let sayHi = function *!*func*/!*(who) { From a6d92eb59aefe18665009cfa1af0295540f49e52 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:57:43 -0400 Subject: [PATCH 09/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 9a110b2dd..dc62b5f6e 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -254,7 +254,7 @@ let sayHi = function *!*func*/!*(who) { alert(`Hello, ${who}`); } else { *!* - func("Guest"); //usa func para volver a llamarse + func("Guest"); // usa func para volver a llamarse a sí misma */!* } }; From 8f5e3ccb7fa9f621de4db814aefaf4e6f8b0d096 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:57:52 -0400 Subject: [PATCH 10/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index dc62b5f6e..0081b2bdd 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -301,7 +301,7 @@ sayHi = null; welcome(); // Error, ¡la llamada sayHi anidada ya no funciona! ``` -Eso sucede porque la función toma `sayHi` de su entorno léxico externo. No hay `sayHi` local, por lo que se utiliza la variable externa. Y en el momento de la llamada, ese `sayHi` externo es ` nulo`. +Eso sucede porque la función toma `sayHi` de su entorno léxico externo. No hay `sayHi` local, por lo que se utiliza la variable externa. Y en el momento de la llamada, ese `sayHi` externo es `nulo`. El nombre opcional que podemos poner en la Expresión de función está destinado a resolver exactamente este tipo de problemas. From 6ce7f18082d677421b1ef85d7dc1e0c0f09863ae Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:58:00 -0400 Subject: [PATCH 11/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 0081b2bdd..6903e57e5 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -326,7 +326,7 @@ welcome(); // Hello, Guest (la llamada anidada funciona) Ahora funciona, porque el nombre `"func"` es una función local. No se toma desde el exterior (y no es visible allí). La especificación garantiza que siempre hará referencia a la función actual. -El código externo todavía tiene su variable `sayHi` o `welcome`. Y `func` es un "nombre de función interna ", porque la función puede llamarse internamente. +El código externo todavía tiene su variable `sayHi` o `welcome`. Y `func` es un "nombre de función interna", porque la función puede llamarse internamente. ```smart header="No existe tal cosa para la `Declaración de funciones`" La función de "nombre interno" descrita aquí solo está disponible para `Expresiones de funciones`, no para` Declaraciones de funciones`. Para las declaraciones de funciones, no hay sintaxis para agregar un nombre "interno". From dee00be14067db3db42b50f48be9df5850f888d1 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:58:13 -0400 Subject: [PATCH 12/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 6903e57e5..a324c1555 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -348,6 +348,6 @@ Si la función se declara como una Expresión de función (no en el flujo de có Además, las funciones pueden tener propiedades adicionales. Muchas bibliotecas de JavaScript conocidas hacen un gran uso de esta función. -Crean una función "principal" y le asignan muchas otras funciones "auxiliares". Por ejemplo, la biblioteca [jQuery](https://jquery.com) crea una función llamada `$`. la biblioteca [lodash](https://lodash.com) crea una función `_`, y luego agrega `_.clone`, `_.keyBy` y otras propiedades (see the [docs](https://lodash.com/docs) cuando quieras aprender más sobre ello). En realidad, lo hacen para disminuir su contaminación del espacio global, de modo que una sola biblioteca proporciona solo una variable global. Eso reduce la posibilidad de nombrar conflictos. +Crean una función "principal" y le asignan muchas otras funciones "auxiliares". Por ejemplo, la biblioteca [jQuery](https://jquery.com) crea una función llamada `$`. La biblioteca [lodash](https://lodash.com) crea una función `_`, y luego agrega `_.clone`, `_.keyBy` y otras propiedades (mira los [docs](https://lodash.com/docs) cuando quieras aprender más sobre ello). En realidad, lo hacen para disminuir su contaminación del espacio global, de modo que una sola biblioteca proporciona solo una variable global. Eso reduce la posibilidad de conflictos de nombres. Por lo tanto, una función puede hacer un trabajo útil por sí misma y también puede tener muchas otras funcionalidades en las propiedades. From be30350af0f1567d97699c39a230c541e27520a7 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:58:27 -0400 Subject: [PATCH 13/37] Update 1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/task.md Co-authored-by: joaquinelio --- .../06-function-object/5-sum-many-brackets/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/task.md b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/task.md index 2b41d78c5..c90637158 100644 --- a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/task.md +++ b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/task.md @@ -14,4 +14,4 @@ sum(6)(-1)(-2)(-3) == 0 sum(0)(1)(2)(3)(4)(5) == 15 ``` -P.D Sugerencia: es posible que deba configurar un objeto personalizado para una conversión primitiva para su función. +P.D. Sugerencia: es posible que deba configurar una conversión personalizada "objeto a primitiva" en su función. From ddf8b2fd753cf249cf2de99c894435d244d88558 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:58:40 -0400 Subject: [PATCH 14/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index a324c1555..49b0e3116 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -7,7 +7,7 @@ Cada valor en JavaScript tiene un tipo. ¿Qué tipo es una función? En JavaScript, las funciones son objetos. -Una buena manera de imaginar funciones es como "objetos de acción" invocables. No solo podemos llamarlos, sino también tratarlos como objetos: agregar / eliminar propiedades, pasar por referencia, etc. +Una buena manera de imaginar funciones es como "objetos de acción" invocables. No solo podemos llamarlos, sino también tratarlos como objetos: agregar/eliminar propiedades, pasar por referencia, etc. ## La propiedad "name" From dce9fdcd8ef075609bb33967fdb4080ea9c5f2fb Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:58:51 -0400 Subject: [PATCH 15/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 49b0e3116..acd2c54fb 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -31,7 +31,7 @@ let sayHi = function() { alert("Hi"); }; -alert(sayHi.name); // sayHi (hay un nombre!) +alert(sayHi.name); // sayHi (¡hay un nombre!) ``` También funciona si la asignación se realiza mediante un valor predeterminado: From d779bc6bcfd6230a166d8e182ca44e315fdc928f Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:59:06 -0400 Subject: [PATCH 16/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index acd2c54fb..46c666007 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -91,7 +91,7 @@ alert(f2.length); // 2 alert(many.length); // 2 ``` -Aquí podemos ver que los *parámetros rest* no se cuentan:. +Aquí podemos ver que los *parámetros rest* no se cuentan. La propiedad `length` a veces se usa para [introspección](https://en.wikipedia.org/wiki/Type_introspection) en funciones que operan en otras funciones.. From 553d3cdcee6e4dc0ae0dcf5e66bfcbc1bea7d3ef Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:59:21 -0400 Subject: [PATCH 17/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 46c666007..df307b913 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -93,7 +93,7 @@ alert(many.length); // 2 Aquí podemos ver que los *parámetros rest* no se cuentan. -La propiedad `length` a veces se usa para [introspección](https://en.wikipedia.org/wiki/Type_introspection) en funciones que operan en otras funciones.. +La propiedad `length` a veces se usa para [introspección](https://es.wikipedia.org/wiki/Introspecci%C3%B3n_de_tipos) en funciones que operan en otras funciones. Por ejemplo, en el siguiente código, la función `ask` , acepta una` question` y un número arbitrario de funciones `handler` para llamar. From 1fb9dc8953bf6db379fa8cc11fefb23b82b30488 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:59:35 -0400 Subject: [PATCH 18/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index df307b913..ed5daedd4 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -125,7 +125,7 @@ function ask(question, ...handlers) { ask("Question?", () => alert('You said yes'), result => alert(result)); ``` -Este es un caso particular llamado [polimorfismo](https://en.wikipedia.org/wiki/Polymorphism_(computer_science)) --tratar los argumentos de manera diferente según su tipo o, en nuestro caso, según la 'longitud'. La idea tiene un uso en las bibliotecas de JavaScript. +Este es un caso particular llamado [polimorfismo](https://es.wikipedia.org/wiki/Polimorfismo_(inform%C3%A1tica)) -- tratar los argumentos de manera diferente según su tipo o, en nuestro caso, según la 'longitud'. La idea tiene un uso en las bibliotecas de JavaScript. ## Propiedades personalizadas From 721421356dcffe54c0c650236b8031c5951893ec Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:59:48 -0400 Subject: [PATCH 19/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index ed5daedd4..233441652 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -129,7 +129,7 @@ Este es un caso particular llamado [polimorfismo](https://es.wikipedia.org/wiki/ ## Propiedades personalizadas -También podemos agrega nuestras propias propiedades. +También podemos agregar nuestras propias propiedades. Aquí agregamos la propiedad `counter` para rastrear el recuento total de llamadas From c5942e870efeaea8d0635044a7be5500d2829c5a Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 12:00:09 -0400 Subject: [PATCH 20/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 233441652..1d15691d9 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -151,7 +151,7 @@ alert( `Called ${sayHi.counter} times` ); // Llamamos 2 times ``` ```warn header="Una propiedad no es una variable." -La propiedad asignada a una función como `sayHi.counter = 0` *no* define una variable local `counter` dentro de ella. En otras palabras, una propiedad `counter` y una variable `let counter` son dos cosas no relacionadas. +Una propiedad asignada a una función como `sayHi.counter = 0` *no* define una variable local `counter` dentro de ella. En otras palabras, una propiedad `counter` y una variable `let counter` son dos cosas no relacionadas. Podemos tratar una función como un objeto, almacenar propiedades en ella, pero eso no tiene ningún efecto en su ejecución. Las variables no son propiedades de la función y viceversa. Estos solo son dos mundos paralelos. ``` From 4ff2eba5c55fb2cb36eaf633fb8bef86c4ac8ab3 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 12:00:22 -0400 Subject: [PATCH 21/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 1d15691d9..222a89fb2 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -156,7 +156,7 @@ Una propiedad asignada a una función como `sayHi.counter = 0` *no* define una v Podemos tratar una función como un objeto, almacenar propiedades en ella, pero eso no tiene ningún efecto en su ejecución. Las variables no son propiedades de la función y viceversa. Estos solo son dos mundos paralelos. ``` -Las propiedades de la función a veces pueden reemplazar los cierres o *closures* . Por ejemplo, podemos reescribir el ejemplo de la función de contador del capítulo para usar una propiedad de función: +Las propiedades de la función a veces pueden reemplazar las clausuras o *closures*. Por ejemplo, podemos reescribir el ejemplo de la función de contador del capítulo para usar una propiedad de función: ```js run function makeCounter() { From 9f42b1c6b59dd5aecf3f1e96d0b321751642722a Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 12:00:35 -0400 Subject: [PATCH 22/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 222a89fb2..49cb014fd 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -177,7 +177,7 @@ alert( counter() ); // 0 alert( counter() ); // 1 ``` -`Count` ahora se almacena en la función directamente, no en su entorno léxico externo. +`count` ahora se almacena en la función directamente, no en su entorno léxico externo. ¿Es mejor o peor que usar un cierre (*closure*)? From 23b52a3467cc6b96ec250c3c6a3f3ed359ce469c Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 12:00:48 -0400 Subject: [PATCH 23/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 49cb014fd..49b3ebfeb 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -179,7 +179,7 @@ alert( counter() ); // 1 `count` ahora se almacena en la función directamente, no en su entorno léxico externo. -¿Es mejor o peor que usar un cierre (*closure*)? +¿Es mejor o peor que usar una clausura (*closure*)? La principal diferencia es que si el valor de `count` vive en una variable externa, entonces el código externo no puede acceder a él. Solo las funciones anidadas pueden modificarlo. Y si está vinculado a una función, entonces tal cosa es posible: From b31e2f5368f463440e0f94b0fa1a5e09911bda5f Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 12:01:03 -0400 Subject: [PATCH 24/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 49b3ebfeb..7b243a471 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -227,7 +227,7 @@ let sayHi = function *!*func*/!*(who) { ¿Logramos algo aquí? ¿Cuál es el propósito de ese nombre adicional de "func"? -Primero, tengamos en cuenta que todavía tenemos una `expresión de función`. Agregar el nombre `" func "` después de `function` no lo convirtió en una `declaración de función`, porque todavía se crea como parte de una expresión de asignación. +Primero, tengamos en cuenta que todavía tenemos una `expresión de función`. Agregar el nombre `"func"` después de `function` no lo convirtió en una `declaración de función`, porque todavía se crea como parte de una expresión de asignación. Agregar ese nombre tampoco rompió nada. From 555d5e4bdf947ea1036c5d1b74fce9f6f5f951a9 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 12:01:17 -0400 Subject: [PATCH 25/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: joaquinelio --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 7b243a471..89df28ea7 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -231,7 +231,7 @@ Primero, tengamos en cuenta que todavía tenemos una `expresión de función`. A Agregar ese nombre tampoco rompió nada. -La función todavía está disponible como `sayHi ()`: +La función todavía está disponible como `sayHi()`: ```js run let sayHi = function *!*func*/!*(who) { From 8717d4f0c01e879e577003233e0c1b28d3e7f164 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Wed, 24 Jun 2020 15:54:51 -0400 Subject: [PATCH 26/37] Update 1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> --- .../06-function-object/2-counter-inc-dec/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md index 5a208b49d..e20fa878c 100644 --- a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md +++ b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md @@ -10,6 +10,6 @@ Modifique el código de `makeCounter()` para que el contador también pueda dism - `counter.set(value)` debería establecer el contador a `value`. - `counter.decrease()` debería disminuir el contador en 1. -Consulte el código de sandbox para ver el ejemplo de uso completo. +Consulte el código en el entorno de pruebas para ver el ejemplo de uso completo. P.D. Puedes usar un cierre o la propiedad de función para mantener el recuento actual. O escribe ambas variantes. From 52c8d8163131efab4647a6dbd71bdd46bc882265 Mon Sep 17 00:00:00 2001 From: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> Date: Thu, 25 Jun 2020 09:14:39 -0300 Subject: [PATCH 27/37] Update 1-js/06-advanced-functions/06-function-object/article.md --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 89df28ea7..db508c3ef 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -331,7 +331,7 @@ El código externo todavía tiene su variable `sayHi` o `welcome`. Y `func` es u ```smart header="No existe tal cosa para la `Declaración de funciones`" La función de "nombre interno" descrita aquí solo está disponible para `Expresiones de funciones`, no para` Declaraciones de funciones`. Para las declaraciones de funciones, no hay sintaxis para agregar un nombre "interno". -A veces, necesitamos un nombre interno confiable, este es un motivo para reescribir un formulario de `Declaración de funciones` en `Expresión de funciones` con nombre. +A veces, necesitamos un nombre interno confiable, este es un motivo para reescribir un formulario de Declaración de funciones en Expresión de funciones con nombre. ``` ## Resumen From bf6b2074035e304a3991d1a82cc51ca03d5c1280 Mon Sep 17 00:00:00 2001 From: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> Date: Thu, 25 Jun 2020 09:14:57 -0300 Subject: [PATCH 28/37] Update 1-js/06-advanced-functions/06-function-object/article.md --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index db508c3ef..9f39ffdbb 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -329,7 +329,7 @@ Ahora funciona, porque el nombre `"func"` es una función local. No se toma desd El código externo todavía tiene su variable `sayHi` o `welcome`. Y `func` es un "nombre de función interna", porque la función puede llamarse internamente. ```smart header="No existe tal cosa para la `Declaración de funciones`" -La función de "nombre interno" descrita aquí solo está disponible para `Expresiones de funciones`, no para` Declaraciones de funciones`. Para las declaraciones de funciones, no hay sintaxis para agregar un nombre "interno". +La característica "nombre interno" descrita aquí solo está disponible para Expresiones de funciones, no para Declaraciones de funciones. Para las declaraciones de funciones, no hay sintaxis para agregar un nombre "interno". A veces, necesitamos un nombre interno confiable, este es un motivo para reescribir un formulario de Declaración de funciones en Expresión de funciones con nombre. ``` From 1acd4091b870044c3efb3c62efefbcac3e7b85e7 Mon Sep 17 00:00:00 2001 From: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> Date: Thu, 25 Jun 2020 09:16:13 -0300 Subject: [PATCH 29/37] Update 1-js/06-advanced-functions/06-function-object/article.md --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 9f39ffdbb..8e460fea0 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -328,7 +328,7 @@ Ahora funciona, porque el nombre `"func"` es una función local. No se toma desd El código externo todavía tiene su variable `sayHi` o `welcome`. Y `func` es un "nombre de función interna", porque la función puede llamarse internamente. -```smart header="No existe tal cosa para la `Declaración de funciones`" +```smart header="No existe tal cosa para la Declaración de funciones" La característica "nombre interno" descrita aquí solo está disponible para Expresiones de funciones, no para Declaraciones de funciones. Para las declaraciones de funciones, no hay sintaxis para agregar un nombre "interno". A veces, necesitamos un nombre interno confiable, este es un motivo para reescribir un formulario de Declaración de funciones en Expresión de funciones con nombre. From 8dbf81cc5c1b7b814c0fe226f25d9b30fde5b067 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Thu, 25 Jun 2020 13:18:04 -0400 Subject: [PATCH 30/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 8e460fea0..8103950eb 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -95,7 +95,7 @@ Aquí podemos ver que los *parámetros rest* no se cuentan. La propiedad `length` a veces se usa para [introspección](https://es.wikipedia.org/wiki/Introspecci%C3%B3n_de_tipos) en funciones que operan en otras funciones. -Por ejemplo, en el siguiente código, la función `ask` , acepta una` question` y un número arbitrario de funciones `handler` para llamar. +Por ejemplo, en el siguiente código, la función `ask` , acepta una `question` y un número arbitrario de funciones `handler` para llamar. Una vez que un usuario proporciona su respuesta, la función llama a los controladores. Podemos pasar dos tipos de controladores: From 43ea2388b5174983610557cf825131b9d821f683 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Thu, 25 Jun 2020 13:18:11 -0400 Subject: [PATCH 31/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 8103950eb..b39bce931 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -131,7 +131,7 @@ Este es un caso particular llamado [polimorfismo](https://es.wikipedia.org/wiki/ También podemos agregar nuestras propias propiedades. -Aquí agregamos la propiedad `counter` para rastrear el recuento total de llamadas +Aquí agregamos la propiedad `counter` para rastrear el recuento total de llamadas: ```js run function sayHi() { From 45f621c288211ee81f387f2807a59bc1a646c8fd Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Thu, 25 Jun 2020 13:18:18 -0400 Subject: [PATCH 32/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index b39bce931..78bd29cbb 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -147,7 +147,7 @@ sayHi.counter = 0; // valor inicial sayHi(); // Hi sayHi(); // Hi -alert( `Called ${sayHi.counter} times` ); // Llamamos 2 times +alert( `Called ${sayHi.counter} times` ); // Llamamos 2 veces ``` ```warn header="Una propiedad no es una variable." From 48b677eb6e34d72599be6057735c2e8d1a32eb9b Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Thu, 25 Jun 2020 13:18:26 -0400 Subject: [PATCH 33/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 78bd29cbb..4397e9017 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -246,7 +246,7 @@ Hay dos cosas especiales sobre el nombre `func`, que le hacen útil: 1. Permite que la función se haga referencia internamente. 2. No es visible fuera de la función.. -Por ejemplo, la función `sayHi` a continuación se vuelve a llamar a sí misma con `"Guest" ` si no se proporciona `who`: +Por ejemplo, la función `sayHi` a continuación se vuelve a llamar a sí misma con `"Guest"` si no se proporciona `who`: ```js run let sayHi = function *!*func*/!*(who) { From 058400eb3d8c89ac3d51fffab65c48d5eeb2f680 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Thu, 25 Jun 2020 13:18:39 -0400 Subject: [PATCH 34/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 4397e9017..a87db8859 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -227,7 +227,7 @@ let sayHi = function *!*func*/!*(who) { ¿Logramos algo aquí? ¿Cuál es el propósito de ese nombre adicional de "func"? -Primero, tengamos en cuenta que todavía tenemos una `expresión de función`. Agregar el nombre `"func"` después de `function` no lo convirtió en una `declaración de función`, porque todavía se crea como parte de una expresión de asignación. +Primero, tengamos en cuenta que todavía tenemos una Expresión de Función. Agregar el nombre `"func"` después de `function` no lo convirtió en una Declaración de Función, porque todavía se crea como parte de una expresión de asignación. Agregar ese nombre tampoco rompió nada. From 2d16bef7e41e86cf71012032b3ff03537413a29f Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Thu, 25 Jun 2020 13:18:49 -0400 Subject: [PATCH 35/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index a87db8859..08b69d312 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -150,7 +150,7 @@ sayHi(); // Hi alert( `Called ${sayHi.counter} times` ); // Llamamos 2 veces ``` -```warn header="Una propiedad no es una variable." +```warn header="Una propiedad no es una variable" Una propiedad asignada a una función como `sayHi.counter = 0` *no* define una variable local `counter` dentro de ella. En otras palabras, una propiedad `counter` y una variable `let counter` son dos cosas no relacionadas. Podemos tratar una función como un objeto, almacenar propiedades en ella, pero eso no tiene ningún efecto en su ejecución. Las variables no son propiedades de la función y viceversa. Estos solo son dos mundos paralelos. From 7e9e518e488adee8cab8e651fd38d7e60bd669b3 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Thu, 25 Jun 2020 13:18:57 -0400 Subject: [PATCH 36/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 08b69d312..2485007d0 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -138,7 +138,7 @@ function sayHi() { alert("Hi"); *!* - //vamos a contar + //vamos a contar las veces que se ejecuta sayHi.counter++; */!* } From 02a179e5b4a6cff223d7b3aa995c53475a728064 Mon Sep 17 00:00:00 2001 From: Valentina VP <34555644+vplentinax@users.noreply.github.com> Date: Thu, 25 Jun 2020 13:19:24 -0400 Subject: [PATCH 37/37] Update 1-js/06-advanced-functions/06-function-object/article.md Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com> --- 1-js/06-advanced-functions/06-function-object/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 2485007d0..c9a002848 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -225,7 +225,7 @@ let sayHi = function *!*func*/!*(who) { }; ``` -¿Logramos algo aquí? ¿Cuál es el propósito de ese nombre adicional de "func"? +¿Logramos algo aquí? ¿Cuál es el propósito de ese nombre adicional de `"func"`? Primero, tengamos en cuenta que todavía tenemos una Expresión de Función. Agregar el nombre `"func"` después de `function` no lo convirtió en una Declaración de Función, porque todavía se crea como parte de una expresión de asignación.