Defining Functions

  • Revision slug: JavaScript/Guide/Obsolete_Pages/Defining_Functions
  • Revision title: Defining Functions
  • Revision id: 118079
  • Created:
  • Creator: cruciatus
  • Is current revision? No
  • Comment Propuesta de traducción al español de la página; 417 words added, 268 words removed; page display name changed to 'Definición de funciones'

Revision Content

Definición de funciones

Una función es definida mediante una palabra clave (típicamente function) seguida de:

  • El nombre de la función.
  • La lista de argumentos a pasar a la función, encerrados entre paréntesis y separados por comas.
  • Las instrucciones JavaScript que va a ejecutar la función al ser invocada, encerradas entre corchetes, { }. Las instrucciones contenidas en la definición de una función pueden incluir llamados a otras funciones que se encuentren definidas dentro de la aplicación actual.

Ejemplo simple

Por elemplo, el código siguiente define una función llamada "cuadrado":

function cuadrado(numero) {
  return numero * numero;
}

La función  cuadrado toma un argumento, llamado numero y devuelve el cuadrado aritmético del mismo. Esta función consta de una instrucción que indica que debe devolver su argumento multiplicado por sí mismo. La sentencia return, contenida en la instrucción, indica a la función el valor que debe devolver.

return numero * numero

Los parámetros pasados como argumentos a las funciones son tomados de dos maneras: por valor y por referencia. En el primer caso la función recibe una copia del valor; mientras que en el segundo recibe un apuntador (puntero) a la dirección de memoria dónde se encuentra dicho valor.

Parámetros pasados por valor

Los valores primitivos pasados como parámetros a las funciones, son pasados por valor; esto significa que los cambios que la función les aplique sólo serán visibles dentro de la misma. Si una función cambia un valor primitivo, dicho cambio no se reflejará globalmente, ni dentro del bloque de instrucciones que contenga el llamado a la misma.

Parámetros pasados por referencia

Un objeto (i.e. un valor no primitivo, tal como una matriz (Array) o un objeto definido por el usuario) pasado a una función como parámetro, es pasado por referencia. La función recibe un apuntador a su posición actual en memoria; de modo que los cambios, aplicados a sus propiedades se realizan directamente allí y se reflejan globalmente, como se ilustra en el siguiente ejemplo:

function miFuncion(elObjeto) {
  elObjeto.marca="Toyota";
}
var micarro = {marca:"Honda", modelo:"Accord", anho:1998};
var x=micarro.marca;     // devuelve Honda
miFuncion(micarro);
var y=micarro.marca;     // devuelve Toyota (la propiedad fue modificada dentro de la función)

Nota: Asignar un nuevo objeto al parámetro dentro de la función no tiene efcto alguno en el llamador:

function miFuncion(elObjeto) {
  elObjeto = {marca:"Ford", modelo:"Focus", anho:2006};
}
var micarro = {marca:"Honda", modelo:"Accord", anho:1998};
var x=micarro.marca;     // devuelve Honda
miFuncion(micarro);
var y=micarro.marca;     // todavía devuelve Honda (la redeclaración del objeto, no tiene efecto; se hace en otra posición de memoria)

Definición condicional de funciones

A function can be defined based on a condition. For example, given the following function definition:

if (num == 0)
{
  function myFunc(theObject) {
    theObject.make="Toyota"
  }
}

the myFunc function is only defined if the variable num equals 0. If num does not equal 0, the function is not defined, and any attempt to execute it will fail.

Function expressions

A function can also be defined inside an expression. This is called a function expression. Typically such a function is anonymous; it does not have to have a name. For example, the function square could have been defined as:

var square = function(number) {return number * number};

This is convenient when passing a function as an argument to another function. The following example shows the map function being defined and then called with an anonymous function as its first parameter:

function map(f,a) {
  var result=new Array;
  for (var i = 0; i != a.length; i++)
    result[i] = f(a[i]);
  return result;
}

The call

map(function(x) {return x * x * x}, [0, 1, 2, 5, 10]);
returns {{ mediawiki.external('0, 1, 8, 125, 1000') }}.

See also

In addition to defining functions as described here, you can also define Function objects.

A method is a function associated with an object. You'll learn more about objects and methods in Chapter 8, "Working with Objects." {{ PreviousNext("Core_JavaScript_1.5_Guide:Exception_Handling_Statements:try...catch_Statement", "Core_JavaScript_1.5_Guide:Calling_Functions") }}

{{ languages( { "zh-tw": "zh_tw/Core_JavaScript_1.5_教學/函數", "fr": "fr/Guide_JavaScript_1.5/D\u00e9finition_de_fonctions", "ja": "ja/Core_JavaScript_1.5_Guide/Defining_Functions", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Definiowanie_funkcji" } ) }}

Revision Source

<div class="onlyinclude">
<h3 name="Defining_functions">Definición de funciones</h3>
<p>Una función es definida mediante una <strong>palabra clave</strong> (típicamente function) seguida de:</p>
<ul> <li>El nombre de la función.</li> <li>La lista de argumentos a pasar a la función, encerrados entre paréntesis y separados por comas.</li> <li>Las instrucciones JavaScript que va a ejecutar la función al ser invocada, encerradas entre corchetes, { }. Las instrucciones contenidas en la definición de una función pueden incluir llamados a otras funciones que se encuentren definidas dentro de la aplicación actual.</li>
</ul>
<h4 name="Simple_example">Ejemplo simple</h4>
<p>Por elemplo, el código siguiente define una función llamada "cuadrado":</p>
<pre class="eval">function cuadrado(numero) {
  return numero * numero;
}
</pre>
<p>La función  <span style="font-family: monospace;">cuadrado</span> toma un argumento, llamado <code>numero</code> y devuelve el cuadrado aritmético del mismo. Esta función consta de una instrucción que indica que debe devolver su argumento multiplicado por sí mismo. La sentencia <code>return</code>, contenida en la instrucción, indica a la función el valor que debe devolver.</p>
<pre class="eval">return numero * numero
</pre>
<p>Los parámetros pasados como argumentos a las funciones son tomados de dos maneras: por valor y por referencia. En el primer caso la función recibe una copia del valor; mientras que en el segundo recibe un <em>apuntador</em> (puntero) a la <em>dirección de memoria</em> dónde se encuentra dicho valor.</p>
<h4>Parámetros pasados por valor</h4>
<p>Los valores primitivos pasados como parámetros a las funciones, son pasados <span style="font-style: italic;">por</span><em> valor</em>; esto significa que los cambios que la función les aplique sólo serán visibles dentro de la misma. Si una función cambia un valor primitivo, dicho cambio no se reflejará globalmente, ni dentro del bloque de instrucciones que contenga el llamado a la misma.</p>
<h4>Parámetros pasados por referencia</h4>
<p>Un objeto (i.e. un <a href="/en/JS/Glossary" title="en/JS/Glossary">valor no primitivo</a>, tal como una matriz (Array) o un objeto definido por el usuario) pasado a una función como parámetro, es pasado por referencia. La función recibe un apuntador a su posición actual en memoria; de modo que los cambios, aplicados a sus propiedades se realizan directamente allí y se reflejan globalmente, como se ilustra en el siguiente ejemplo:</p>
<pre class="eval">function miFuncion(elObjeto) {
  elObjeto.marca="Toyota";
}
var micarro = {marca:"Honda", modelo:"Accord", anho:1998};
var x=micarro.marca;     // devuelve Honda
miFuncion(micarro);
var y=micarro.marca;     // devuelve Toyota (la propiedad fue modificada dentro de la función)
</pre>
<p>Nota: Asignar un nuevo objeto al parámetro dentro de la función no tiene efcto alguno en el llamador:</p>
<pre class="eval">function miFuncion(elObjeto) {
  elObjeto = {marca:"Ford", modelo:"Focus", anho:2006};
}
var micarro = {marca:"Honda", modelo:"Accord", anho:1998};
var x=micarro.marca;     // devuelve Honda
miFuncion(micarro);
var y=micarro.marca;     // todavía devuelve Honda (la redeclaración del objeto, no tiene efecto; se hace en otra posición de memoria)
</pre>
<h4 name="Defining_functions_conditionally">Definición condicional de funciones</h4>
<p>A function can be defined based on a condition. For example, given the following function definition:</p>
<pre class="eval">if (num == 0)
{
  function myFunc(theObject) {
    theObject.make="Toyota"
  }
}
</pre>
<p>the <code>myFunc</code> function is only defined if the variable <code>num</code> equals 0. If <code>num</code> does not equal 0, the function is not defined, and any attempt to execute it will fail.</p>
<h4 name="Function_expressions">Function expressions</h4>
<p>A function can also be defined inside an expression. This is called a <strong>function expression</strong>. Typically such a function is <em>anonymous</em>; it does not have to have a name. For example, the function <code>square</code> could have been defined as:</p>
<pre class="eval">var square = function(number) {return number * number};
</pre>
<p>This is convenient when passing a function as an argument to another function. The following example shows the map function being defined and then called with an anonymous function as its first parameter:</p>
<pre class="eval">function map(f,a) {
  var result=new Array;
  for (var i = 0; i != a.length; i++)
    result[i] = f(a[i]);
  return result;
}
</pre>
<p>The call</p>
<pre class="eval">map(function(x) {return x * x * x}, [0, 1, 2, 5, 10]);
</pre>
returns {{ mediawiki.external('0, 1, 8, 125, 1000') }}.</div>
<h4 name="See_also">See also</h4>
<p>In addition to defining functions as described here, you can also define <a href="/en/Core_JavaScript_1.5_Guide/Predefined_Core_Objects/Function_Object" title="en/Core_JavaScript_1.5_Guide/Predefined_Core_Objects/Function_Object">Function objects</a>.</p>
<p>A method is a function associated with an object. You'll learn more about objects and methods in <a href="/en/Core_JavaScript_1.5_Guide#Working_with_Objects" title="en/Core_JavaScript_1.5_Guide#Working_with_Objects">Chapter 8, "Working with Objects."</a> {{ PreviousNext("Core_JavaScript_1.5_Guide:Exception_Handling_Statements:try...catch_Statement", "Core_JavaScript_1.5_Guide:Calling_Functions") }}</p>
<p>{{ languages( { "zh-tw": "zh_tw/Core_JavaScript_1.5_教學/函數", "fr": "fr/Guide_JavaScript_1.5/D\u00e9finition_de_fonctions", "ja": "ja/Core_JavaScript_1.5_Guide/Defining_Functions", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Definiowanie_funkcji" } ) }}</p>
Revert to this revision