Estoy trabajando con la biblioteca datatables.js. El contenido del código no es lo que estoy tratando de entender, sino cómo funcionan las funciones como argumentos/parámetros. ¿Por qué no funciona la última versión, mientras que las dos primeras sí? Entiendo que los dos primeros son esencialmente lo mismo, pero ¿qué pasa con javascript que me impide hacer la última opción a continuación?
function GetDateTime(value){ if (value == null) return ""; var pattern = /Date\(([^)]+)\)/; //date format from server side var results = pattern.exec(value); var dt = new Date(parseFloat(results[1])); var tMonth = dt.getMonth() + 1; var tDay = dt.getDate(); return (tMonth.toString().length > 1 ? tMonth : "0" + tMonth) + "/" + (tDay.toString().length > 1 ? tDay : "0" + tDay) + "/" + dt.getFullYear(); } // function GetDateTime ... // This works { "data": "Date", "autoWidth": true, "render": function (value) { return GetDateTime(value); } } ... // This works { "data": "Date", "autoWidth": true, "render": function (value) { // The exact same code in GetDateTime(value) } } ... // This does not work { "data": "Date", "autoWidth": true, "render": GetDateTime(value) } }
Hasta donde yo sé, el último está haciendo exactamente lo mismo, sin embargo, cuando hago eso, arroja un error que dice "el valor no está definido". ¿Cómo se define el valor más que con la declaración de función anónima? ¿Qué pasa con eso que hace que javascript pase un valor allí en lugar de dentro de una llamada de función implícita?
Esto funcionaría porque pasa el valor de la propiedad a tu función:
{ "data": "Date", "autoWidth": true, "render": value => GetDateTime(value) }