Skip to content

Functions

// Function Declaration — hoisted (ใช้ก่อนประกาศได้)
function greet(name) {
return `สวัสดี ${name}!`;
}
// Function Expression — ไม่ hoisted
const greet2 = function(name) {
return `สวัสดี ${name}!`;
};
// Arrow Function — syntax สั้น (ES6+)
const greet3 = (name) => `สวัสดี ${name}!`;

Arrow Functions แบบละเอียด

Section titled “Arrow Functions แบบละเอียด”
// parameter เดียว — ไม่ต้องมีวงเล็บ
const double = x => x * 2;
// หลาย parameters — ต้องมีวงเล็บ
const add = (a, b) => a + b;
// ไม่มี parameter — ต้องมีวงเล็บเปล่า
const getRandom = () => Math.random();
// body หลายบรรทัด — ต้องมี {} และ return
const calculate = (a, b) => {
const sum = a + b;
const avg = sum / 2;
return avg;
};
// return object — ต้องครอบด้วย ()
const makeUser = (name, age) => ({ name, age });
function createUser(name, role = "viewer", active = true) {
return { name, role, active };
}
createUser("สมชาย"); // { name: "สมชาย", role: "viewer", active: true }
createUser("สมหญิง", "admin"); // { name: "สมหญิง", role: "admin", active: true }
createUser("วิชัย", "editor", false); // { name: "วิชัย", role: "editor", active: false }
// rest — รวม arguments ที่เหลือเป็น array
function sum(...numbers) {
return numbers.reduce((total, n) => total + n, 0);
}
console.log(sum(1, 2, 3)); // 6
console.log(sum(10, 20, 30, 40)); // 100
// rest ต้องอยู่ตัวสุดท้าย
function log(level, ...messages) {
console.log(`[${level}]`, ...messages);
}
// spread array
const nums1 = [1, 2, 3];
const nums2 = [4, 5, 6];
const all = [...nums1, ...nums2]; // [1, 2, 3, 4, 5, 6]
// spread เป็น arguments
Math.max(...nums1); // 3
// spread object
const defaults = { theme: "dark", lang: "th" };
const settings = { ...defaults, lang: "en" }; // override lang