Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

Duda referente al llamar un funcion

Cordial saludo.

No tengo muy claro la forma de llamar a una funcion, en el sentido de que en ocasiones solo se pone el nombre de la funcion si parentesis y en otras ocasiones se coloca el nombre de la funcion con sus respectivos parentesis.

Ejemplo. setInterval(actualizarPantalla(),100) -------Aqui se llama la funcion "actualizarPantalla()" con parentesis y no funciona setInterval(actualizarPantalla,100) ------- Aqui se llama la funcion "actualizarPantalla" sin parentesis y funciona

limpiarPantalla() ------ Aqui se llama la funcion "limpiarPantalla()" con parentesis y funciona

No tengo muy claro esto.

Muchas gracias por la atension prestada.

3 respuestas

Hola Gustavo, cuando llamas a la función y ésta va como parámetro no se coloca paréntesis. y en el caso de limpiarPantalla funciona porque la función no actúa como parámetro. Imaginate que es una figura y necesitas poner colores:

dibujarCuadrado(x,y,"green"); dibujarCuadrado(x,y,"red"); dibujarCuadrado(x,y,"blue");

En esa función de dibujarCuadrado(dentro de los paréntesis pusiste los valores del elemento).

Ahora si yo hubiera creado un array var colores= ["green", "blue", "red"] , tambien creo una variable que me indique el indice del array var indiceColorActual = 0.

Luego creo una función que vaya haciendo el recorrido de ese array para ir eligiendo los colores dentro de ese array y la llamo elegirColor(){ aqui va el condicional y el incremento que haga que recorra el array. Seria indiceColorActual ++}

Cuando llamo a la función:

dibujarCuadrado(x,y,elegirColor); // Para que se entienda a modo de ejemplo digamos que la función "elegirColor" está funcionando como parámetro y por eso no lleva paréntesis. En caso anterior vos elegias que color va en cada cuadrado y en este caso lo automatizaste.

Acordate de este ejercicio

var pantalla = document.querySelector("canvas"); var pincel = pantalla.getContext("2d"); pincel.fillStyle = "grey"; pincel.fillRect(0,0,600,400); var color = ["blue","green","yellow", "red","pink"]; var indiceColorActual = 0;

function dibujarCirculo(evento){
    var x = evento.pageX - pantalla.offsetLeft;
    var y = evento.pageY - pantalla.offsetTop;    
    pincel.fillStyle = color[indiceColorActual];
    pincel.beginPath();
    pincel.arc(x,y,10,0,2*3.14);
    pincel.fill();
    console.log(x + "," + y);        
}

pantalla.onclick = dibujarCirculo;

function alterarColor() {

    indiceColorActual++;
    if(indiceColorActual >= color.length) {
        indiceColorActual =0;
    }
    return false;
 }


pantalla.oncontextmenu = alterarColor;

Muchas gracias por la aclaracion

yo entiendo que al no poner los () el valor retorno se toma de la función y es diferente a cero. Eso pasa porque setInterval espera una referencia de la funcion y no busca ejecutarla (es como si la tomara como una variable).