วันเสาร์ที่ 26 กรกฎาคม พ.ศ. 2557

ภาษา JavaScript ฉบับผู้เริ่มต้น part 14-2

: ฟังก์ชันก็คือค่าของตัวแปร (จบเรื่องฟังก์ชัน)

>> ฟังก์ชันของภาษาจาวาสคริปต์เป็นเหมือนกับค่าที่เรากำหนดให้กับตัวแปรครับ ตัวอย่างเช่น

var x = 10;

เราบอกได้ว่า ค่าคงที่ (literal) สิบถูกกำหนดให้กับตัวแปร x หรือก็คือตัวแปร x มีค่าเท่ากับสิบ ดังนั้นจากคำกล่าวที่ว่า 'ฟังก์ชันก็คือค่าของตัวแปร' จึงสามารถเขียนได้ในรูปแบบต่อไปนี้ด้วยครับ

var x = function( ) { return 10; };

document.write( x() ); ผลลัพธ์เท่ากับ 10

>> ซึ่งจากตัวอย่างข้างต้น หากเราเขียนว่า document.write( x ); เฉยๆแบบนี้ก็จะได้ค่าเป็นฟังก์ชันที่ถูกกำหนดให้ x หรือก็คือค่า "function ( ) { return 10; }" นั่นเอง

>> และเรียกค่าของตัวแปรที่ถูกกำหนดให้เป็นฟังก์ชันว่า Function Literal โดยพิสูจน์ได้จากตัวอย่างต่อไปนี้

var x = 10;
document.write( typeof(x) ); ผลลัพธ์เท่ากับ number
var y = function() { };
document.write( typeof(y) ); ผลลัพธ์เท่ากับ function

>> เราสามารถส่งค่าที่เป็น function เหมือนกับการส่งค่าประเภทอื่นๆ ตัวอย่างเช่น
var x = 10;
var y = x;
document.write( y ); ผลลัพธ์เท่ากับ 10

ในทำนองเดียวกัน

var x = function() { return 99; };
var y = x;
document.write( y() ); ผลลัพธ์เท่ากับ 99

>> ย้อนกลับไปเรื่องของ array กับฟังก์ชันที่ชื่อว่า sort โดยปกติจะแปลงค่าในอาร์เรย์ทั้งหมดเป็นสตริงแล้วนำมาเปรียบเทียบกันใช่ไหมครับ ถ้าค่าทั้งหมดนั้นเป็นตัวเลข ก็จะได้ชุดตัวเลขที่เรียงลำดับจากน้อยไปหามาก ดังนี้
var x = [30, 20, 40, 50, 10];
x.sort();
document.write( x.join() ); ผลลัพธ์เท่ากับ 10,20,30,40,50

>> ทว่าเราสามารถกำหนดค่าการ sort ให้เป็นแบบอื่นได้ (เช่น เรียงลำดับจากมากไปหาน้อย) โดยส่งค่าฟังก์ชันต่อไปนี้เข้าไป
var maxToMin = function( first, second ) { return second - first; };
x.sort( maxToMin );
document.write( x.join() ); ผลลัพธ์เท่ากับ 50,40,30,20,10

>> อ่านเพิ่มเติมเกี่ยวกับอัลกอริทึมการ sort พร้อมเหตุผล
http://www.w3schools.com/jsref/jsref_sort.asp

>> โอกาสหน้าพบกับ Object และ Class หัวใจของการ design pattern ที่น่าหลงไหล เรื่องสุดท้ายก่อนที่เราจะไปมันส์กันต่อกับการสร้างเกมด้วยภาษาจาวาสคริปต์ครับผม

ไม่มีความคิดเห็น:

แสดงความคิดเห็น