แนะนำ function
Function คืออะไร ?
Function คือ ชุดคำสั่งที่ทำการรวมกันเอาไว้ และให้เรียกใช้ผ่าน function ออกมาแทนได้
ตัวอย่างการประกาศ function นั้นมี 2 วิธีคือ
function functionName() {}
= ประกาศโดยให้ function นำหน้าconst functionName = () => {}
= ประกาศแบบ arrow function
โดย functionName
สามารถกำหนดชื่อเองได้ (วิธีกำหนดเหมือนกำหนดชื่อตัวแปร)
โดยทั้ง 2 วิธีนั้นสามารถประกาศ function ได้ทั้งคู่ ซึ่งวิธีที่ 2 นั้นเป็นท่าใหม่ ที่เป็น Standard หลัง ES6 (ปี 2015 เป็นต้นมา) ซึ่งแนะนำให้ใช้ท่านี้ เพราะมันจะประกาศแนวทางเดียวกันกับตัวแปรเลย
เราจะลองยกตัวอย่างการใช้งาน function กับการตัดเกรด
- เร าจะเอา if-else ตัดเกรดเข้ามารวมใน function ชื่อ
calculateGrade
- แล้วให้คืนค่า Grade ออกไป (ผ่าน return ของ function)
// การประกาศ calculateGrade แบบ arrow function
const calculateGrade = (score) => {
if (score >= 90) {
return 'Your grade is A.'
} else if (score >= 80) {
return 'Your grade is B.'
} else if (score >= 70) {
return 'Your grade is C.'
} else if (score >= 60) {
return 'Your grade is D.'
} else {
return 'Your grade is F.'
}
}
// การประกาศ calculateGradeOld แบบ function ปกติ
function calculateGradeOld (score) {
if (score >= 90) {
return 'Your grade is A.'
} else if (score >= 80) {
return 'Your grade is B.'
} else if (score >= 70) {
return 'Your grade is C.'
} else if (score >= 60) {
return 'Your grade is D.'
} else {
return 'Your grade is F.'
}
}
let score = 85
console.log(calculateGrade(score))
console.log(calculateGradeOld(score))
ตรง (score)
สิ่งที่อยู่ใน () เรียกว่า parameters
- Parameters คือค่าที่จะส่งเข้าจากภาพนอกเข้าสู่ function
- ตามตัวอย่างนี้ score = 85 เป็นสิ่งที่ประกาศอยู่นอก function
- เราจึงทำการส่ง score เข้า
calculateGrade
เพื่อให้สามารถส่ง score จากภายนอกเข้าไปคำนวนใน function ได้ - และการ
return
คือการคืนผลลัพธ์ของ function ออกมา ซึ่งในทีนี้เราให้ return string (Your grade is ...
) ออกมา ดังนั้นจึงสามารถนำ String ในนั้นมาแสดงผลตรงconsole.log
ได้
ร วมถึง Parameters เองสามารถเป็นตัวแปรอะไรก็ได้ตั้งแต่ Number, String, Boolean, Array, Object รวมถึง Function ด้วยเช่นกัน
ใน Javascript มอง function เป็น Object ตัวหนึ่งที่เก็บคำสั่งเอาไว้ ดังนั้น การส่ง parameters function เข้าไป = เป็นเหมือนการส่ง Object เข้าไปใน function (จากนี้จะขอเรียกว่า Parameter function
)
ซึ่งใน function ที่ติดกับ Array นั้นมีความสามารถในการส่ง Parameter function เข้าไปใน function ของ Array ได้ (เหมือนกับ forEach ที่ใช้ในก่อนหน้านี้) เราจะมาลองดูตัวอย่างกัน
Parameter function กับการหาและการ modified Array
ด้วยความที่ Array เป็นการเก็บข้อมูลที่มากกว่า 1 ข้อมูลไว้ Array จึงสามารถค้นหาได้เช่นกัน โดยคำสั่งที่จะขอนำมาแนะนำคือ
find
= สำหรับหาข้อมูลใน array
มาลองดูตัวอย่างของการใช้ find กัน
let numbers = [10, 20, 30, 40, 50]
let foundNumber = numbers.find((element) => {
return element == 20
})
console.log(foundNumber) // ได้คะแนน 20
อย่างที่ทุกคนเห็นกัน ส่วน code
(element) => {
return element == 20
}
นี่แหละคือ Parameter function คือการใส่ function ลงไปใน parameter ของ .find
ที่เป็นคำสั่งค้นหา เพื่อบอก .find
ว่าจะให้ค้นหาแบบไหนออกมา ซึ่งใน function นั้นมีการระบุว่า return element == 20
เท่ากับว่า element (ซึ่งเป็นตัวแทนในแต่ละตัวที่กำลังวนลูปไป) ตัวไหนที่ตรงตามเงื่อนไขนี้ ก็จะ return ออกจาก .find
ไป
นอกจากคำสั่งค้นหาแล้ว สามารถจัดเรียงข้อมูลและปรับเปลี่ยนข้อมูลใหม่ได้ เช่นกัน เราจะลองมาดูผ่าน 3 คำสั่งนี้เพิ่มเติม
sort
= สำหรับการเรียงข้อมูลใหม่map
= สำหรับการวนลูปตัวแปร และ update ตัวแปรใหม่ออกมาfilter
= สำหรับการ filter array เอาเฉพาะ condition ที่ต้องการออกมา
ซึ่งทั้ง 3 คำสั่งนี้รับเป็น Parameter function ทั้งหมดเลย เรามาลอง ดูตัวอย่างกัน
let numbers = [10, 20, 30, 40]
// ลองใช้ .map โดยการให้ทุกตัวเลขใน numbers เพิ่มเป็น 2 เท่าแล้วใส่ตัวแปรใหม่ไป
let doubleNumbers = numbers.map((number) => {
return number * 2
})
// ลองใช้ .filter โดยการเอาแค่เฉพาะตัวเลขที่มากกว่า 25 จาก numbers ออกมา แล้วใส่ตัวแปรใหม่ไป
let moreNumbers = numbers.filter((number) => {
return number > 25
})
// ลองใช้ .sort
let randNumber = [5, 13, 8, 1]
randNumber.sort((a, b) => {
return a - b
})
console.log('randNumber', randNumber) // [1, 5, 8, 13]
Parameter function กับการหาและการ modified Object Array
เราล องกับ Object ใน Array บ้าง ด้วยคำสั่งแบบเดียวกัน find
, map
, filter
let people = [
{ name: 'John', age: 25 },
{ name: 'Mike', age: 30 },
{ name: 'Jack', age: 35 },
{ name: 'Loop', age: 40 }
]
// ตัวอย่าง .find โดยเอา people ที่มี age = 30 ออกมา และหยิบ object ของคนนั้นออกมา
let foundPeople = people.find((person) => {
return person.age == 30
})
console.log(foundPeople) // { name: 'Jane', age: 30 }
// ตัวอย่าง .map โดยเพิ่ม age ของทุกคนเพิ่มขึ้น 2 เท่าและส่งออกมาใส่อีกตัวแปรหนึ่ง
let doubleAgePeople = people.map((person) => {
person.age = person.age * 2
return person
})
console.log(doubleAgePeople)
/*
ผลลัพธ์ของ console.log นี้
{ name: 'John', age: 50 }
{ name: 'Mike', age: 60 }
{ name: 'Jack', age: 70 }
{ name: 'Loop', age: 80 }
*/
// ตัวอย่าง .filter โดยเอา Object เฉพาะ people ที่มี age มากกว่า 30
let olderThan30 = people.filter((person) => {
return person.age > 30
})
console.log(olderThan30)
/*
ผลลัพธ์ของ console.log นี้
{ name: 'Jack', age: 35 }
{ name: 'Loop', age: 40 }
*/
ประมาณนี้ คิดว่าพื้นฐานเท่านี้ เพียงพอสำหรับการทำงานในเคสทั่วไปแล้ว สำหรับหัวข้อถัดไป ** เช่นเดิม หากอ่านแล้วงงแนะนำให้ลองดูคลิปก่อน เพื่อความเข้าใจที่เพิ่มขึ้นด้วยนะครับ
ถ้าใครอยากจะรู้จักคำสั่งของ javascript มากขึ้น ขอแนะนำ 2 แหล่งที่ศึกษาเพิ่มเติมได้
- ที่ w3school
- ที่ codeacademy หัวข้อ "Learn Javascript"
แล้วเจอกันใน Session ต่อไป หัวข้อที่เราจะนำ Javascript มาใช้ร่วมกับ Event ใน html กัน