tutorial definicion caracteristicas attribute javascript coding-style callback

definicion - Estilo de JavaScript: devoluciones de llamada opcionales



title css (9)

Tengo algunas funciones en las que querré ejecutar una devolución de llamada de vez en cuando, pero no siempre, ¿está comprobando si la devolución de llamada está definida / funciona con un buen estilo o hay una forma mejor?

ejemplo:

function save (callback){ .....do stuff...... if(typeof callback !== ''undefined''){ callback(); }; };


Agregando a lo que Pablo dijo, en el último ECMAScript esto es válido:

// @param callback Default value is a noop fn. const wow = (callback = ()=>{}) => { callback(); };

Tenga en cuenta que un usuario puede pasar algo más que una función y lo romperá.


Me cansé tanto de ver ese mismo fragmento una y otra vez. Escribí esto:

var cb = function(g) { if (g) { var args = Array.prototype.slice.call(arguments); args.shift(); g.apply(null, args); } };

Tengo cientos de funciones haciendo cosas como

cb(callback, { error : null }, [0, 3, 5], true);

o lo que sea...

Soy escéptico de toda la estrategia de "asegurarme de que funcione". Los únicos valores legítimos son una función o falsy. Si alguien pasa un número distinto de cero o una cadena no vacía, ¿qué vas a hacer? ¿Cómo se puede ignorar el problema?


Me he sincedido movido a coffee-script y encontré argumentos por defecto es una buena manera de resolver este problema

doSomething = (arg1, arg2, callback = ()->)-> callback()


Si el criterio para ejecutar la devolución de llamada es que esté definido o no, está bien. Además, sugiero que verifique si realmente es una función adicional.


Simplemente hazlo

if (callback) callback();

Prefiero llamar a la devolución de llamada si se proporciona, sin importar de qué tipo sea. No permita que falle silenciosamente, por lo que el implementador sabe que aprobó un argumento incorrecto y puede solucionarlo.


También puedes hacer:

var noop = function(){}; // do nothing. function save (callback){ callback = callback || noop; .....do stuff...... };

Es especialmente útil si usa la callback de callback en algunos lugares.

Además, si está utilizando jQuery , ya tiene una función como esa, se llama $.noop


Una función válida se basa en el prototipo de Función, use:

if (callback instanceof Function)

para asegurarse de que la devolución de llamada es una función


Yo personalmente prefiero

typeof callback === ''function'' && callback();

Sin embargo, el comando typeof es dudoso y solo debe usarse para "undefined" y "function"

¡Los problemas con el typeof !== undefined es que el usuario puede pasar un valor que está definido y no una función


ArgueJS puede hacer con ArgueJS :

function save (){ arguments = __({callback: [Function]}) .....do stuff...... if(arguments.callback){ callback(); }; };