¿Cómo pasar argumentos dentro de la función?

Empecé a aprender Jquery y tengo problemas para entender los parámetros de las funciones :( Si miras mi en el primer código y ejecútelo: mi script Trabajará (SIN parámetros). Y si miras mi segundo código
(CON parámetros) y ejecutarlo: segundo guion TAMBIÉN FUNCIONARÁ!!

Mi primera pregunta: ¿Hice correctamente planificadas parámetro en mi segundo guion?
Segunda pregunta: ¿Cómo puedo comprobar es mi parámetro planificadas o ser aprobado correctamente a mi función?
PD Perdón por ser NOOB y ¡¡GRACIAS!!

   //First code (WITHOUT PARAMETERS!!!) 
   $(document).ready(function () {
       var addclass = $('p:first');

       function AddClass() {
           addclass.addClass('first');
           if (addclass.is($('.first'))) {
               alert('here');
           }
           else {
               alert('not here');
           }
       }
       $('.button').click(function () {
           AddClass(addclass);
       });
   });
   //Second code (WITH PARAMETERS)
   $(document).ready(function () {
       var addclass = $('p:first');

       function AddClass(addclass) {
           addclass.addClass('first');
           if (addclass.is($('.first'))) {
               alert('here');
           }
           else {
               alert('not here');
           }
       }
       $('.button').click(function () {
           AddClass(addclass);
       });
   });

preguntado el 02 de julio de 12 a las 17:07

2 Respuestas

su segundo argumento es correcto y para verificar cualquier argumento pasado a una función use:

arguments.length

por ejemplo:

function myfunc() {
   alert( arguments.length ); //output: 1, because you passed one argument

   // and to get that

   var myarg = arguments[0];
}

myfunc(someVar);

Si no pasa ningún argumento entonces:

function myfunc() {
   alert( arguments.length ); //output: 0, because you passed no argument
}

myfunc();

Para su función:

  function AddClass(addclass) {

                      ^-- declaring addclass is not necessary if you use like following

       // checking for argument

       if( arguments.length ) {
         // arguments[0] will give you addclass
         // you may not write addclass to function like above
       }

       addclass.addClass('first');
       if (addclass.is($('.first'))) {
           alert('here');
       }
       else {
           alert('not here');
       }
   }

Función de llamada con addclass argumentos:

   $('.button').click(function () {
       AddClass(addclass);
   });

Respondido 02 Jul 12, 17:07

Gracias por tu respuesta y por aclararme eso :) - user1496436

Si le pasaste correctamente los argumentos a tu segunda función, para ver los argumentos pasados ​​a tu función puedes verlos de dos formas:

individualmente usando la notación de matriz

function AddClass(addClass) {
    console.log(arguments[0]); // This will show you the first parameter
    // Some code...
}

Con la función jQuery $.each();

function AddClass(addClass) {
    $.each(arguments, function (key, value) {
        console.log(value); // Output the value of all of your arguments
    });
}

En este caso no importa si pasas o no los parámetros porque la variable addClass a la que accedes y modificas en la función AddClass están en el mismo ámbito.

Deberías echar un vistazo a esta publicación. JavaScriptVariableScope para comprender lo que está sucediendo en su código real y por qué sus dos ejemplos de código funcionan correctamente.

contestado el 23 de mayo de 17 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.