Arrow Function () => ใน Javascript ES6 และ Typescript

Wittawat Patcharinsak
Konoe
Published in
1 min readJan 9, 2017

ในภาษา Javascript ES 6 มีการใช้ Arrow Function เข้ามาช่วยเสริมในการเขียน function ให้สะดวกมากขึ้น

หากใครคุ้นเคยกับภาษา C# น่าจะคุ้นหูคุ้นตากับ arrow function มาบ้างแล้ว จะเห็นว่า arrow function มีลักษณะคล้ายคลึงกับ Lambda Expressions ทั้งในด้าน syntax และ ลักษณะการทำงานเป็นอย่างมาก

โดย ข้อดีของ arrow function ใน javascript มีดังนี้

  1. สั้นกระทัดรัด ไม่จำเป็นต้องเขียนคำว่า function
  2. Context ภายในฟังก์ชัน ยังคงเป็น context ภายนอก
    (ตัวแปร this ยังคงเป็น this ของภายนอก)
  3. Arguments

ตัวอย่างการใช่ง่าย ๆ

มีความหมายคล้ายกับ

แต่มีข้อแต่ต่างนิดหน่อยตรงที่เมื่อเราใช้ this ภาษา javascript ความหมายของ this เปลี่ยนไปได้ง่ายเกินไป ซึ่งเจ้าตัวฟังก์ชั่นลูกศรนี้มาช่วยเราได้มาก ดูได้ในตัวอย่างต่อไปนี้

ผลลัพธ์ที่ต้องการคือ 2 แต่เมื่อนำ code ไป execute กลับได้คำตอบเป็น 1 เพราะ this ใน function Person กับ this ใน growOld เป็นคนละตัวกัน ซึ่ง arrow function เข้ามาแก้ไข้ในส่วนนี้

ซึ่ง code ที่เห็นสามารถเปลี่ยนให้เข้าใจได้ง่ายเมื่อเราเขียนดังนี้

จะเห็นว่า this ภายใน function กับ this ผ่านใน function growOld จะมีค่าเท่ากัน

** ถ้าใช้ typescript สามารถเขียน constructor ได้ง่าย ๆ ดังนี้

** ข้อควรระวัง การใช้ arrow function ควรจะเลือกใช้ในกรณีที่เหมาะสมเช่นเมื่อไม่ต้องการใช้ this ของ function หรือมีการใช้ arguments ที่แตกต่างกับ function ตัวนอก หรือการใช้ใน callback ของ libraries ต่าง ๆ เพราะในบางครั้งมีการใช้ this ใน libraries ด้วย

--

--