{"id":33765,"date":"2025-07-31T11:11:01","date_gmt":"2025-07-31T09:11:01","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=33765"},"modified":"2025-07-31T11:11:01","modified_gmt":"2025-07-31T09:11:01","slug":"evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/","title":{"rendered":"Evitar la duplicaci\u00f3n de c\u00f3digo aprovechando las funciones de orden superior en JavaScript."},"content":{"rendered":"\n<p>El lenguaje JavaScript es cada vez m\u00e1s utilizado tambi\u00e9n del lado del servidor gracias a la gran cantidad de librer\u00edas de desarrollo disponibles. Esto implica un considerable aumento en la complejidad del c\u00f3digo, que debe ser cada vez m\u00e1s abierto a extensiones y cerrado a modificaciones.<\/p>\n\n\n\n<p>En la siguiente parte del art\u00edculo se mostrar\u00e1 c\u00f3mo evitar la duplicaci\u00f3n de c\u00f3digo aprovechando las funciones de orden superior (high-order functions) en JavaScript.<\/p>\n\n\n\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-fd80b448      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\t\u00cdndice \t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#problemas-de-duplicaci\u00f3n-de-c\u00f3digo\" class=\"uagb-toc-link__trigger\">Problemas de duplicaci\u00f3n de c\u00f3digo<\/a><li class=\"uagb-toc__list\"><a href=\"#objetos-de-primera-clase-y-funciones-de-orden-superior\" class=\"uagb-toc-link__trigger\">Objetos de primera clase y funciones de orden superior<\/a><li class=\"uagb-toc__list\"><a href=\"#comparadores-y-algoritmos-de-ordenaci\u00f3n\" class=\"uagb-toc-link__trigger\">Comparadores y algoritmos de ordenaci\u00f3n<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<h2 class=\"wp-block-heading\" id=\"h-problemas-de-duplicacion-de-codigo\">Problemas de duplicaci\u00f3n de c\u00f3digo<\/h2>\n\n\n\n<p>Primero, expliquemos claramente un problema t\u00edpico: se proporciona un array de objetos JavaScript que representan usuarios de una web app y que tienen los atributos nombre, apellido y posts. Posts es una lista de strings que contiene el t\u00edtulo de cada post publicado.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">&lt;code&gt;<span class=\"hljs-keyword\">let<\/span> p = {\n    <span class=\"hljs-string\">\"name\"<\/span>: <span class=\"hljs-string\">\"Mary\"<\/span>,\n    <span class=\"hljs-string\">\"surname\"<\/span>: <span class=\"hljs-string\">\"Smith\"<\/span>,\n    <span class=\"hljs-string\">\"posts\"<\/span>: &#91;<span class=\"hljs-string\">\"image.png\"<\/span>, <span class=\"hljs-string\">\"codemotionRome.png\"<\/span>, <span class=\"hljs-string\">\"article.txt\"<\/span>]\n}\n&lt;<span class=\"hljs-regexp\">\/code&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Se quieren implementar varios algoritmos de ordenaci\u00f3n del array, como por ejemplo selectionSort y bubbleSort. Tambi\u00e9n se quiere implementar la posibilidad de ordenar el array por nombre, por apellido o por n\u00famero de posts publicados.<\/p>\n\n\n\n<p>Para implementar un algoritmo de ordenaci\u00f3n es necesario comparar el atributo de inter\u00e9s por el cual se quiere ordenar. Sin embargo, la comparaci\u00f3n entre dos nombres se hace de manera diferente a la comparaci\u00f3n entre el n\u00famero de posts publicados:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">&lt;code&gt;<span class=\"hljs-keyword\">let<\/span> people = &#91;p0, p1, p2, ...]\n\n<span class=\"hljs-comment\">\/\/ Comparaci\u00f3n de personas por nombre<\/span>\npeople&#91;<span class=\"hljs-number\">0<\/span>]&#91;<span class=\"hljs-string\">\"name\"<\/span>] &gt; people&#91;<span class=\"hljs-number\">1<\/span>]&#91;<span class=\"hljs-string\">\"name\"<\/span>]\n\n<span class=\"hljs-comment\">\/\/ Comparaci\u00f3n de personas por n\u00famero de posts publicados<\/span>\npeople&#91;<span class=\"hljs-number\">0<\/span>]&#91;<span class=\"hljs-string\">\"posts\"<\/span>].length &gt; people&#91;<span class=\"hljs-number\">1<\/span>]&#91;<span class=\"hljs-string\">\"posts\"<\/span>].length\n&lt;<span class=\"hljs-regexp\">\/code&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Entonces, uno podr\u00eda pensar en desarrollar las siguientes funciones, modificando solo la implementaci\u00f3n de la comparaci\u00f3n entre objetos:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">code<\/span>&gt;<\/span>selectionSortByName(){...};\nbubbleSortByName(){...};\nselectionSortByPosts(){...};\nbubbleSortByPosts(){...};\n...\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">code<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>La soluci\u00f3n propuesta arriba es realmente mala porque provoca una gran duplicaci\u00f3n de c\u00f3digo que ejecuta los algoritmos selectionSort y bubbleSort, causando los siguientes problemas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Es necesario definir muchas funciones con implementaciones casi id\u00e9nticas<\/li>\n\n\n\n<li>Si se detecta un error en el algoritmo de una funci\u00f3n, todas las dem\u00e1s funciones de la misma familia deben modificarse manualmente para resolver el mismo problema<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-objetos-de-primera-clase-y-funciones-de-orden-superior\"><strong>Objetos de primera clase y funciones de orden superior<\/strong><\/h2>\n\n\n\n<p>En JavaScript, las funciones son objetos de primera clase (first-class objects), lo que significa que su c\u00f3digo (firma e implementaci\u00f3n) puede asignarse a una variable.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">&lt;code&gt;<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">foo<\/span>(<span class=\"hljs-params\"><\/span>)<\/span>{\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Executing foo...\"<\/span>);\n}\n\n<span class=\"hljs-built_in\">console<\/span>.log(foo)    <span class=\"hljs-comment\">\/\/ Imprime el c\u00f3digo de la funci\u00f3n<\/span>\n&lt;<span class=\"hljs-regexp\">\/code&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Una funci\u00f3n se dice que es de orden superior (high-order function) cuando acepta como argumento otra funci\u00f3n o cuando retorna una funci\u00f3n como resultado.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">&lt;code&gt;foo = <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\"><\/span>)<\/span>{\n   <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"foo\"<\/span>)\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">execute<\/span>(<span class=\"hljs-params\">fn<\/span>)<\/span>{\n    fn()\n}\n\nexecute(foo)\n&lt;<span class=\"hljs-regexp\">\/code&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>En el c\u00f3digo anterior, la funci\u00f3n <code>execute()<\/code> es una funci\u00f3n de orden superior.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-comparadores-y-algoritmos-de-ordenacion\"><strong>Comparadores y algoritmos de ordenaci\u00f3n<\/strong><\/h2>\n\n\n\n<p>Se puede pensar entonces en aprovechar la l\u00f3gica de las funciones de orden superior para evitar la duplicaci\u00f3n de c\u00f3digo en el ejemplo anterior o en casos similares. Aqu\u00ed c\u00f3mo proceder:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Definir las funciones de orden superior, es decir, las funciones que implementan el algoritmo de ordenaci\u00f3n y que aceptan como par\u00e1metros el array a ordenar y una funci\u00f3n que ser\u00e1 invocada para realizar la comparaci\u00f3n entre los distintos elementos del array.<\/li>\n\n\n\n<li>Definir varias funciones para comparar dos objetos del array, en nuestro caso dos personas, seg\u00fan diferentes par\u00e1metros. Estas funciones comparadoras ser\u00e1n pasadas como par\u00e1metro a las funciones de orden superior.<\/li>\n<\/ol>\n\n\n\n<p>Un aspecto fundamental que no se debe olvidar es que las funciones comparadoras deben actuar de forma diferente, pero tener la misma firma y l\u00f3gica en los valores de retorno.<br><\/p>\n\n\n\n<p>Cada funci\u00f3n comparadora recibe dos elementos del array y retorna los siguientes valores:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-1<\/code> si el primer elemento es anterior al segundo<\/li>\n\n\n\n<li><code>0<\/code> si los dos elementos son intercambiables<\/li>\n\n\n\n<li><code>+1<\/code> si el primer elemento es posterior al segundo<\/li>\n<\/ul>\n\n\n\n<p>Veamos un ejemplo:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">&lt;code&gt;<span class=\"hljs-keyword\">let<\/span> compareByName = <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\">personA, personB<\/span>)<\/span>{\n    <span class=\"hljs-keyword\">if<\/span>(personA.name &lt; personB.name){ <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">-1<\/span> }\n    <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span>(personA.name &gt; personB.name){ <span class=\"hljs-keyword\">return<\/span> +<span class=\"hljs-number\">1<\/span> }\n    <span class=\"hljs-keyword\">else<\/span> { <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span> }\n}\n\n<span class=\"hljs-keyword\">let<\/span> p1 = {<span class=\"hljs-string\">\"name\"<\/span>: <span class=\"hljs-string\">\"John\"<\/span>, <span class=\"hljs-string\">\"surname\"<\/span>: <span class=\"hljs-string\">\"Doe\"<\/span>, <span class=\"hljs-string\">\"posts\"<\/span>: &#91;]}\n<span class=\"hljs-keyword\">let<\/span> p2 = {<span class=\"hljs-string\">\"name\"<\/span>: <span class=\"hljs-string\">\"Mary\"<\/span>, <span class=\"hljs-string\">\"surname\"<\/span>: <span class=\"hljs-string\">\"Smith\"<\/span>, <span class=\"hljs-string\">\"posts\"<\/span>: &#91;]}\n\ncompareByName(p1, p2)    <span class=\"hljs-comment\">\/\/ Retorna -1 porque John &lt; Mary<\/span>\ncompareByName(p2, p1)    <span class=\"hljs-comment\">\/\/ Retorna +1 porque Mary &gt; John<\/span>\n&lt;<span class=\"hljs-regexp\">\/code&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>La misma l\u00f3gica puede implementarse para comparar por n\u00famero de posts publicados:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">&lt;code&gt;<span class=\"hljs-keyword\">let<\/span> compareByPosts = <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\">personA, personB<\/span>)<\/span>{\n    <span class=\"hljs-keyword\">if<\/span>(personA.posts.length &lt; personB.posts.length){ <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">-1<\/span> }\n    <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span>(personA.posts.length &gt; personB.posts.length){ <span class=\"hljs-keyword\">return<\/span> +<span class=\"hljs-number\">1<\/span> }\n    <span class=\"hljs-keyword\">else<\/span> { <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span> }\n}\n&lt;<span class=\"hljs-regexp\">\/code&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Ahora solo queda definir la funci\u00f3n de orden superior y pasarle el m\u00e9todo de comparaci\u00f3n deseado:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">&lt;code&gt;<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">selectionSort<\/span><span class=\"hljs-params\">(list, comparator)<\/span><\/span>{\n    <span class=\"hljs-keyword\">for<\/span>(let i = <span class=\"hljs-number\">0<\/span>; i &lt; <span class=\"hljs-keyword\">list<\/span>.length - <span class=\"hljs-number\">1<\/span>; i++){\n        <span class=\"hljs-keyword\">for<\/span>(let j = i+<span class=\"hljs-number\">1<\/span>; j &lt; <span class=\"hljs-keyword\">list<\/span>.length; j++){\n            <span class=\"hljs-keyword\">if<\/span>(comparator(<span class=\"hljs-keyword\">list<\/span>&#91;j], <span class=\"hljs-keyword\">list<\/span>&#91;i]) &lt; <span class=\"hljs-number\">0<\/span>){\n                let tmp = <span class=\"hljs-keyword\">list<\/span>&#91;i];\n                <span class=\"hljs-keyword\">list<\/span>&#91;i] = <span class=\"hljs-keyword\">list<\/span>&#91;j];\n                <span class=\"hljs-keyword\">list<\/span>&#91;j] = tmp;\n            }\n        }\n    }\n}\n\n<span class=\"hljs-comment\">\/\/ Ordenar por nombre<\/span>\nselectionSort(people, compareByName)\n\n<span class=\"hljs-comment\">\/\/ Ordenar por n\u00famero de posts<\/span>\nselectionSort(people, compareByPosts)\n&lt;\/code&gt;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>As\u00ed, hemos logrado aprovechar dos \u00fanicas funciones de orden superior que definen el algoritmo de ordenaci\u00f3n del array y adoptan m\u00e9todos diferentes para comparar los distintos elementos. El c\u00f3digo est\u00e1 poco duplicado y es f\u00e1cilmente extensible; de hecho, si se quisiera a\u00f1adir un nuevo criterio de ordenaci\u00f3n, por ejemplo el apellido, solo ser\u00eda necesario implementar la funci\u00f3n <code>compareBySurname()<\/code> y pasarla como comparadora a una de las dos funciones de orden superior.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El lenguaje JavaScript es cada vez m\u00e1s utilizado tambi\u00e9n del lado del servidor gracias a la gran cantidad de librer\u00edas de desarrollo disponibles. Esto implica un considerable aumento en la complejidad del c\u00f3digo, que debe ser cada vez m\u00e1s abierto a extensiones y cerrado a modificaciones. En la siguiente parte del art\u00edculo se mostrar\u00e1 c\u00f3mo&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/\">Read more<\/a><\/p>\n","protected":false},"author":264,"featured_media":32929,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10606,10648],"tags":[],"collections":[],"class_list":{"0":"post-33765","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-backend-es","8":"category-lenguajes-de-programacion","9":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Evita c\u00f3digo duplicado con funciones de orden superior en JavaScript.<\/title>\n<meta name=\"description\" content=\"Descubre c\u00f3mo evitar la duplicaci\u00f3n de c\u00f3digo con funciones de orden superior en JavaScript. \u00a1Un problema que no debes subestimar!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Evitar la duplicaci\u00f3n de c\u00f3digo aprovechando las funciones de orden superior en JavaScript.\" \/>\n<meta property=\"og:description\" content=\"Descubre c\u00f3mo evitar la duplicaci\u00f3n de c\u00f3digo con funciones de orden superior en JavaScript. \u00a1Un problema que no debes subestimar!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-31T09:11:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1792\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Fabrizio Tedeschi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fabrizio Tedeschi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/\"},\"author\":{\"name\":\"Fabrizio Tedeschi\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/902dc65e0de8be950fb33d9af4fae7f3\"},\"headline\":\"Evitar la duplicaci\u00f3n de c\u00f3digo aprovechando las funciones de orden superior en JavaScript.\",\"datePublished\":\"2025-07-31T09:11:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/\"},\"wordCount\":696,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp\",\"articleSection\":[\"Backend\",\"Lenguajes de programaci\u00f3n\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/\",\"name\":\"Evita c\u00f3digo duplicado con funciones de orden superior en JavaScript.\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp\",\"datePublished\":\"2025-07-31T09:11:01+00:00\",\"description\":\"Descubre c\u00f3mo evitar la duplicaci\u00f3n de c\u00f3digo con funciones de orden superior en JavaScript. \u00a1Un problema que no debes subestimar!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp\",\"width\":1792,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Backend\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Evitar la duplicaci\u00f3n de c\u00f3digo aprovechando las funciones de orden superior en JavaScript.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/902dc65e0de8be950fb33d9af4fae7f3\",\"name\":\"Fabrizio Tedeschi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/IMG_9703-min-100x100.jpg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/IMG_9703-min-100x100.jpg\",\"caption\":\"Fabrizio Tedeschi\"},\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/fabriziot\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Evita c\u00f3digo duplicado con funciones de orden superior en JavaScript.","description":"Descubre c\u00f3mo evitar la duplicaci\u00f3n de c\u00f3digo con funciones de orden superior en JavaScript. \u00a1Un problema que no debes subestimar!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/","og_locale":"en_US","og_type":"article","og_title":"Evitar la duplicaci\u00f3n de c\u00f3digo aprovechando las funciones de orden superior en JavaScript.","og_description":"Descubre c\u00f3mo evitar la duplicaci\u00f3n de c\u00f3digo con funciones de orden superior en JavaScript. \u00a1Un problema que no debes subestimar!","og_url":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2025-07-31T09:11:01+00:00","og_image":[{"width":1792,"height":1024,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp","type":"image\/webp"}],"author":"Fabrizio Tedeschi","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Fabrizio Tedeschi","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/"},"author":{"name":"Fabrizio Tedeschi","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/902dc65e0de8be950fb33d9af4fae7f3"},"headline":"Evitar la duplicaci\u00f3n de c\u00f3digo aprovechando las funciones de orden superior en JavaScript.","datePublished":"2025-07-31T09:11:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/"},"wordCount":696,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp","articleSection":["Backend","Lenguajes de programaci\u00f3n"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/","url":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/","name":"Evita c\u00f3digo duplicado con funciones de orden superior en JavaScript.","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp","datePublished":"2025-07-31T09:11:01+00:00","description":"Descubre c\u00f3mo evitar la duplicaci\u00f3n de c\u00f3digo con funciones de orden superior en JavaScript. \u00a1Un problema que no debes subestimar!","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp","width":1792,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/evita-codigo-duplicado-con-funciones-de-orden-superior-en-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Backend","item":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/"},{"@type":"ListItem","position":3,"name":"Evitar la duplicaci\u00f3n de c\u00f3digo aprovechando las funciones de orden superior en JavaScript."}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/902dc65e0de8be950fb33d9af4fae7f3","name":"Fabrizio Tedeschi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/IMG_9703-min-100x100.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/IMG_9703-min-100x100.jpg","caption":"Fabrizio Tedeschi"},"url":"https:\/\/www.codemotion.com\/magazine\/author\/fabriziot\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--600x400.webp","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--600x600.webp","author_info":{"display_name":"Fabrizio Tedeschi","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/fabriziot\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp",1792,1024,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--150x150.webp",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--300x171.webp",300,171,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--768x439.webp",768,439,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--1024x585.webp",1024,585,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--1536x878.webp",1536,878,true],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a-.webp",1792,1024,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--100x100.webp",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--180x128.webp",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--896x504.webp",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--400x225.webp",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--600x400.webp",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-07-10.04.07-An-image-representing-the-concept-of-avoiding-code-duplication-by-using-high-order-functions-in-JavaScript.-The-scene-shows-a-programmer-working-on-a--600x600.webp",600,600,true]},"uagb_author_info":{"display_name":"Fabrizio Tedeschi","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/fabriziot\/"},"uagb_comment_info":0,"uagb_excerpt":"El lenguaje JavaScript es cada vez m\u00e1s utilizado tambi\u00e9n del lado del servidor gracias a la gran cantidad de librer\u00edas de desarrollo disponibles. Esto implica un considerable aumento en la complejidad del c\u00f3digo, que debe ser cada vez m\u00e1s abierto a extensiones y cerrado a modificaciones. En la siguiente parte del art\u00edculo se mostrar\u00e1 c\u00f3mo&#8230;&hellip;","lang":"es","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/33765","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/264"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=33765"}],"version-history":[{"count":2,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/33765\/revisions"}],"predecessor-version":[{"id":33768,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/33765\/revisions\/33768"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/32929"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=33765"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=33765"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=33765"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=33765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}