ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

ปัจจุบัน javascript เข้ามามีบทบาทในการเขียนเว็บมาก มีการออก Framework  มากมายให้มาได้ลองเล่นกัน และ javascript เองก็มีการอัพเดตไปเรื่อยๆ ซึ่งแน่นอนทำให้ให้มี feature ใหม่ๆมากมายเกิดขึ้นเพื่อให้เขียนได้สั้นลงและแก้ปัญหาที่เกิดขึ้นในเวลาที่ผ่านมา

บทความนี้อธิบายความแตกต่างระหว่างฟังก์ชั่นปกติและ  arrow functions

arrow functions เป็น feature ใหม่ที่นำมาใช้ใน JavaScript ES6 (ES2015) - เป็นการเขียนที่ฟังก์ชั่นที่รัดกุมใน JavaScript   ซึ่งทั้งสองฟังก์ชั่นไม่ว่าจะเป็นฟังก์ชันปกติและ arrow functions เป็นการเขียนที่มีกรทำงานในลักษณะที่คล้ายกัน แต่ก็มีความแตกต่างที่น่าสนใจของทั้งสองรูปแบบฟังก์ชัน 

การเขียนฟังก์ชันแบบปกติเรามักจะเขียนแบบนี้

let x = function function_name(parameters){ 
// body of the function 
}; 

เช่น ดังนี้ 

let square = function(x){ 
return (x*x); 
}; 
console.log(sqaure(9)); 

ผลลัพธ์ที่ได้

output
ผลลัพธ์ของฟังก์ชันปกติ

ส่วนการเขียน ฟังก์ชันแบบ arrow functions

let x = (parameters) => { 
	// body of the function 
}; 

เช่น 

var square = (x) => { 
	return (x*x); 
}; 
console.log(square(9)); 

ผลลัพธ์ที่ได้

output
ผลลัพธ์ของฟังก์ชัน arrow functions

จะเห็นว่ามีผลลัพธ์เหมื่อนกัน แต่การเขียนที่แตกต่าง รูปแบบ arrow function ค่อนข้างจะกระชับกว่า 

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

function Person(age) {
  this.age = age;
  this.growOld = function() { this.age++; }
}
var person = new Person(1);
setTimeout(person.growOld,1000);
setTimeout(function() { console.log(person.age); },2000);
// 1, should have been 2

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

function Person(age) {
  this.age = age;
  this.growOld = () => { this.age++; }
}
var person = new Person(1);
setTimeout(person.growOld,1000);
setTimeout(function() { console.log(person.age); },2000);
// 2

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

 

ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : JAVASCRIPT

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การเข้าใช้งานสำหรับลูกค้าเพื่อซื้อห้องพักหรือขายห้องพัก อโกด้า
โดย milk2533 พ 25 พ.ย. 2020 6:43 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
3
พ 25 พ.ย. 2020 6:43 pm โดย milk2533
อุปโภค กับ บริโภค ต่างกันอย่างไร
โดย milk2533 พ 25 พ.ย. 2020 6:09 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
3
พ 25 พ.ย. 2020 6:09 pm โดย milk2533
Lot ผลิต และ วันหมดอายุ สินค้า ดูอย่างไร
โดย milk2533 พ 25 พ.ย. 2020 5:48 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
11
พ 25 พ.ย. 2020 5:48 pm โดย milk2533
ขนส่งสาธารณะ คืออะไร
โดย milk2533 พ 25 พ.ย. 2020 5:26 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
7
พ 25 พ.ย. 2020 5:26 pm โดย milk2533
ใบเสร็จน้ำมันรถที่สามารถนำมาใช้ค่าใช้จ่ายได้ สังเกตอย่างไร
โดย milk2533 พ 25 พ.ย. 2020 4:57 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
6
พ 25 พ.ย. 2020 4:57 pm โดย milk2533
อัพเดทความปลอดภัย 7 จุด!!! ใน Joomla เวอร์ชั่นใหม่ 3.9.23
โดย tsukasaz พ 25 พ.ย. 2020 11:36 am บอร์ด MindPHP News & Feedback
1
32
พ 25 พ.ย. 2020 12:46 pm โดย prmindphp
แนะนำหนังสือ Pre-Order PHP - high-performance ด้วย Swoole
โดย mindphp อ 24 พ.ย. 2020 4:47 pm บอร์ด Programming - PHP
0
15
อ 24 พ.ย. 2020 4:47 pm โดย mindphp
จ่ายเงินสมทบประกันสังคม มาตรา 33 , 39 อย่างไร
โดย milk2533 อ 24 พ.ย. 2020 3:08 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
14
อ 24 พ.ย. 2020 3:08 pm โดย milk2533