w3schools una tipos pasar parametros otro llamar funciones funcion desde codigos boton anidadas javascript nested-function

tipos - pasar parametros a una funcion javascript desde html



FunciĆ³n anidada de llamada Javascript (6)

Tengo el siguiente código:

function initValidation() { // irrelevant code here function validate(_block){ // code here } }

¿Hay alguna manera de que pueda llamar a la función validate() fuera de la función initValidation() ? He intentado llamar a validate() pero creo que solo está visible dentro de la función principal.


Deberia trabajar.

function initValudation() { validate(); function validate() { } }


Espero que estés buscando algo como esto.

function initValidation() { // irrelevant code here this.validate = function(_block){ // code here } } var fCall = new initValidation() fCall.validate(param);

Esto funcionará.

Espero que esto aborde tu problema.


Esta invocación devolverá la declaración de la función, que es la validación de la función. Así que puedes invocar directamente después de la primera invocación.

function initValidation() { // irrelevant code here return function validate(_block) { // code here } } initValidation()();


Puede llamar a validate desde dentro de initValidation . Me gusta esto.

function initValidation() { // irrelevant code here function validate(_block){ // code here } return validate(someVar); }

validate no es visible para nada fuera de initValidation debido a su scope .

Edit: Aquí está mi sugerencia de una solución.

(function() { function validate(_block){ // code here } function initValidation() { // irrelevant code here return validate(someVar); } function otherFunctions() { // ... } // initValidation = function }()); // initValidation = undefined

Todas sus funciones estarán ocultas a cualquier cosa fuera del envoltorio de la función, pero todas podrán verse entre sí.


Sé que esta es una publicación antigua, pero si desea crear un conjunto de instancias con las que desea trabajar y reutilizar el código, podría hacer algo como esto:

"use strict"; // this is derived from several posts here on SO and ultimately John Resig function makeClassStrict() { var isInternal, instance; var constructor = function(args) { if (this instanceof constructor) { if (typeof this.init == "function") { this.init.apply(this, isInternal ? args : arguments); } } else { isInternal = true; instance = new constructor(arguments); isInternal = false; return instance; } }; return constructor; } var MyClass = makeClassStrict();// create "class" MyClass.prototype.init = function(employeeName, isWorking) { var defaultName = ''notbob''; this.name = employeeName ? employeeName : defaultName; this.working = !!isWorking; this.internalValidate = function() { return { "check": this.working, "who": this.name }; }; }; MyClass.prototype.getName = function() { return this.name }; MyClass.prototype.protoValidate = function() { return { "check": this.working, "who": this.name }; }; var instanceBob = MyClass("Bob", true);// create instance var instanceFred = MyClass("Fred", false);// create instance var mything = instanceFred.internalValidate();// call instance function console.log(mything.check + ":" + mything.who); var myBobthing = instanceBob.protoValidate(); console.log(myBobthing.check + ":" + myBobthing.who);


function initValidation() { // irrelevant code here function validate(_block){ console.log( "test", _block ); } initValidation.validate = validate; } initValidation(); initValidation.validate( "hello" ); //test hello