{"id":682,"date":"2024-07-30T20:00:23","date_gmt":"2024-07-30T18:00:23","guid":{"rendered":"https:\/\/blog.sutilweb.eu\/?page_id=682"},"modified":"2024-07-30T20:00:24","modified_gmt":"2024-07-30T18:00:24","slug":"009-arrow-function-funciones-flecha","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/javascript\/javascript-practico\/04-estructuras-de-control-en-javascript\/009-arrow-function-funciones-flecha\/","title":{"rendered":"009. Arrow function &#8211; funciones flecha"},"content":{"rendered":"\n<p>Las <strong>arrow function<\/strong> son una implementaci\u00f3n que vino a mejorar sobre todo la manera en como escribimos, es m\u00e1s expresivo, m\u00e1s sint\u00e9tico, e incluso, para alguien que no sepa mucho sobre la sintaxis de programaci\u00f3n, es claro el tipo de expresiones que se pueden lograr con las <strong>arrow function<\/strong> o <strong>funciones flecha<\/strong>.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Caracter\u00edsticas de las arrow function<\/h2>\n\n\n\n<p>Primero son una nueva forma de definir <strong>funciones an\u00f3nimas<\/strong> que sean <strong>expresadas<\/strong>. Ya dimos con anterioridad la diferencia entre <strong>funciones declaradas<\/strong> y <strong>funciones expresadas<\/strong>, las <strong>funciones expresadas<\/strong> eran cuando a una <strong>variable<\/strong> le asignamos el valor de una <strong>funci\u00f3n an\u00f3nima<\/strong>.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Funci\u00f3n expresada, a una variable le asignamos\n\/\/ como valor una funci\u00f3n an\u00f3nima\nconst saludo = function() {\n   console.log(\"Hola\");\n}\nsaludo();<\/pre>\n\n\n\n<p>Al no ser una <strong>funci\u00f3n declarada<\/strong>, no va a haber <strong>hoisting<\/strong>, y no vamos a poder llamar a dicha funci\u00f3n antes de crearla, como en el caso de las <strong>funciones declaradas<\/strong>.<\/p>\n\n\n\n<p>Una <strong>arrow function<\/strong> tiene la siguiente sintaxis:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Arrow function \/ funci\u00f3n expresada an\u00f3nima\nconst saludo = () =&gt; {\n   console.log(\"Hola\");\n}<\/pre>\n\n\n\n<p>Cuando nuestra <strong>funci\u00f3n<\/strong> tiene una sola linea de c\u00f3digo que se ejecuta, podemos utilizar la siguiente sintaxis:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">const saludo = () =&gt; console.log(\"Hola\");<\/pre>\n\n\n\n<p>Podemos omitir las llaves, por lo que todo se vuelve m\u00e1s expresivo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paso de par\u00e1metros<\/h2>\n\n\n\n<p>El paso de par\u00e1metros a la funci\u00f3n lo hacemos de la siguiente manera.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">const saludar = (nombre) =&gt; console.log(\"Hola\" + nombre);\nsaludar(\"Francisco\");<\/pre>\n\n\n\n<p>Cuando una <strong>funci\u00f3n flecha<\/strong> no recibe <strong>par\u00e1metros<\/strong>, forzosamente hay que poner los par\u00e9ntesis, pero si recibe un s\u00f3lo <strong>par\u00e1metro<\/strong> ya no es necesario poner los par\u00e9ntesis.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">const saludar = nombre =&gt; console.log(\"Hola\" + nombre); \nsaludar(\"Francisco\");<\/pre>\n\n\n\n<p>Las <strong>funciones flecha<\/strong> llevan ya de por s\u00ed un <strong><em>return<\/em> <\/strong>impl\u00edcito. Nos evitamos utilizar la palabra <strong><em>return,<\/em> <\/strong>por lo que no es necesario incluir dicha palabra. Lo vemos en el siguiente ejm.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&nbsp; &nbsp; &nbsp; \/\/ Funci\u00f3n sin retorno impl\u00edcito\n&nbsp; &nbsp; &nbsp; const sumar = function (a, b) {\n&nbsp; &nbsp; &nbsp; &nbsp; return a + b;\n&nbsp; &nbsp; &nbsp; };\n&nbsp; &nbsp; &nbsp; console.log(sumar(1, 2));\n\n&nbsp; &nbsp; &nbsp; \/\/ Arrow function con retorno impl\u00edcito\n&nbsp; &nbsp; &nbsp; const sumar2 = (a, b) =&gt; a + b;\n&nbsp; &nbsp; &nbsp; console.log(sumar2(3, 4));<\/pre>\n\n\n\n<p>De esta manera se&nbsp; vuelve m\u00e1s expresiva la escritura en las <strong>arrow function<\/strong>. Si recibe m\u00e1s de un <strong>par\u00e1metro<\/strong> ha de llevar par\u00e9ntesis. Si s\u00f3lo hay una linea de c\u00f3digo se pueden omitir las llaves.<\/p>\n\n\n\n<p>Veamos otro ejm.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&nbsp; &nbsp; &nbsp; const numeros = [1, 2, 3, 4, 5];\n&nbsp; &nbsp; &nbsp; \/\/ Vamos a iterar sobre cada uno de los n\u00fameros\n&nbsp; &nbsp; &nbsp; \/\/ e imprimirlos en pantalla\n&nbsp; &nbsp; &nbsp; numeros.forEach((el, index) =&gt; {\n&nbsp; &nbsp; &nbsp; &nbsp; console.log(`El elemento ${el} est\u00e1 en la posici\u00f3n ${index}`);\n&nbsp; &nbsp; &nbsp; });<\/pre>\n\n\n\n<p>Hay otra caracter\u00edstica muy importante que tienen las <strong>arrow function<\/strong>, tienen la capacidad de capturar el objeto <strong><em>this<\/em> <\/strong>del contexto en el que se encuentren. Hay que tener mucho cuidado para utilizar <strong>arrow function<\/strong> para declarar <strong>m\u00e9todos<\/strong> dentro de <strong>objetos literales<\/strong> porque podemos tener el problema de que no respeten el contexto del objeto en el que se encuentran. Las <strong>arrow function<\/strong> saltan el objeto en el que se encuentran y heredan el contexto en el que se encuentra el <strong>objeto<\/strong> padre donde se ha declarado.<\/p>\n\n\n\n<p>Dentro de un <strong>objeto literal<\/strong> no es muy buena idea crear <strong>m\u00e9todos<\/strong> a partir de <strong>funciones flecha<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las arrow function son una implementaci\u00f3n que vino a mejorar sobre todo la manera en como escribimos, es m\u00e1s expresivo, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":658,"menu_order":8,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-682","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"Las arrow function son una implementaci\u00f3n que vino a mejorar sobre todo la manera en como escribimos, es m\u00e1s expresivo, [&hellip;]","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=682"}],"version-history":[{"count":2,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/682\/revisions"}],"predecessor-version":[{"id":684,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/682\/revisions\/684"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/658"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}