Learn JavaScript

lesson ā§§ / ⧝ ¡ function: declaration, arrow, default āφāϰ rest

Module ā§Ģ ¡ function: declaration, arrow, default āφāϰ rest

function āĻŽāĻžāύ⧇ āύāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻāĻ•āϟāĻž āϰ⧇āϏāĻŋāĻĒāĻŋ: āĻĒ⧁āϰ⧋ āĻ›āĻŦāĻŋāϟāĻž

FreeāĻĒāĻĄāĻŧāĻž

āĻāχ lesson-āĻ āϝāĻž āĻļāĻŋāĻ–āĻŦ⧇

  • āĻāĻ•āϟāĻž function āĻāĻ•āĻŦāĻžāϰ āϞāĻŋāϖ⧇ āĻ…āύ⧇āĻ• āϜāĻžāϝāĻŧāĻ—āĻž āĻĨ⧇āϕ⧇ call āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āφāϰ āĻ“āϰ definition āφāϰ call āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ āϚāĻŋāύāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤
  • Argument āĻšāĻŋāϏ⧇āĻŦ⧇ value āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āφāϰ return āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•āϟāĻž value āĻĢ⧇āϰāϤ āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤
  • Function-āĻ return āύāĻž āĻĨāĻžāĻ•āϞ⧇ call āϕ⧀ āĻĻ⧇āϝāĻŧ āφāϗ⧇ āĻĨ⧇āϕ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āφāϰ starter-āĻāϰ next āφāϰ nextInt-āϕ⧇ function āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤

Amara-āϰ āĻĻā§‹āĻ•āĻžāύ⧇ member-āϰāĻž 10 āĻļāϤāĻžāĻ‚āĻļ āĻ›āĻžāĻĄāĻŧ āĻĒāĻžāϝāĻŧ, āφāϰ āĻ“āϰ receipt program āĻāχ āĻĻāĻžāĻŽāϟāĻž āĻšāĻŋāϏāĻžāĻŦ āĻ•āϰ⧇ āĻĒāĻžāρāϚ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧāĨ¤ āĻāĻ•āĻĻāĻŋāύ āĻŽāĻžāϞāĻŋāĻ• āĻ›āĻžāĻĄāĻŧ āĻŦāĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ 12 āĻļāϤāĻžāĻ‚āĻļ āĻ•āϰāϞ⧇āύāĨ¤ Bob formula-āϟāĻž āϖ⧁āρāĻœā§‡ āϚāĻžāϰāĻŦāĻžāϰ āĻŦāĻĻāϞāĻžāϞ, āĻĒāĻžā§āϚāĻŽāϟāĻž āĻšā§‹āĻ– āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϗ⧇āϞāĨ¤ āĻāĻ–āύ āϏāĻŦ receipt āĻ āĻŋāĻ•, āĻļ⧁āϧ⧁ gift card-āĻāϰ āϜāĻ¨ā§āϝ āϝ⧇āϟāĻž print āĻšāϝāĻŧ āϏ⧇āϟāĻž āϭ⧁āϞāĨ¤ āĻāχ lesson-āĻ formula-āϟāĻž āĻāĻ•āĻŦāĻžāϰ āϞāĻŋāĻ–āĻŦ, āĻ“āϕ⧇ āĻāĻ•āϟāĻž āύāĻžāĻŽ āĻĻ⧇āĻŦ, āφāϰ āĻĒāĻžāρāϚ āϜāĻžāϝāĻŧāĻ—āĻž āĻĨ⧇āϕ⧇āχ āĻ“āϟāĻž āϚāĻžāϞāĻžāĻŦāĨ¤

āĻāĻ•āϟāĻž āĻ•āĻžāϜ, āĻāĻ•āĻŦāĻžāϰāχ āϞ⧇āĻ–āĻž

Amara-āϰ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻž āϛ⧋āϟ āĻ•āϰ⧇ āϤāĻŋāύ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āύāĻžāĻŽāĻŋāϝāĻŧ⧇ āφāύāϞ⧇ āĻāĻŽāύ āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āϞāĻžāχāύ⧇ āĻāĻ•āχ formula, āĻļ⧁āϧ⧁ āĻĻāĻžāĻŽāϟāĻž āφāϞāĻžāĻĻāĻžāĨ¤

console.log("Rice: " + (500 - Math.floor(500 / 10)));
console.log("Oil: " + (1200 - Math.floor(1200 / 10)));
console.log("Salt: " + (85 - Math.floor(85 / 10)));
Rice: 450
Oil: 1080
Salt: 77

Math.floor āύāĻŋāĻšā§‡āϰ āĻĻāĻŋāϕ⧇ round āĻ•āϰ⧇, āϤāĻžāχ member āĻļ⧁āϧ⧁ āĻĒ⧁āϰ⧋ āϟāĻžāĻ•āĻžāϟāĻžāχ āĻŦāĻžāρāϚāĻžāϝāĻŧāĨ¤ Program āϚāϞāϛ⧇ āĻ āĻŋāĻ•āĻ āĻžāĻ•āĨ¤ āĻāĻžāĻŽā§‡āϞāĻž āĻšāϞ⧋ "10 āĻļāϤāĻžāĻ‚āĻļ āĻ›āĻžāĻĄāĻŧ" āύāĻŋāϝāĻŧāĻŽāϟāĻž āϤāĻŋāύ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻŦāϏ⧇ āφāϛ⧇, āφāϰ āĻŦāĻĻāϞāĻžāϤ⧇ āϗ⧇āϞ⧇ āϤāĻŋāύāϟāĻžāχ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

function āĻšāϞ⧋ āύāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻāĻ• āϟ⧁āĻ•āϰ⧋ code, āϝ⧇āϟāĻž āĻāĻ•āĻŦāĻžāϰ āϞ⧇āĻ–ā§‹ āφāϰ āϝāĻ–āύ āĻĻāϰāĻ•āĻžāϰ āϤāĻ–āύ āϚāĻžāϞāĻžāĻ“āĨ¤ āύāĻŋāĻšā§‡ āĻāĻ•āχ program, āĻļ⧁āϧ⧁ āύāĻŋāϝāĻŧāĻŽāϟāĻž āϏāϰāĻŋāϝāĻŧ⧇ āϰāĻžāĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇ memberPrice āύāĻžāĻŽā§‡āϰ āĻāĻ•āϟāĻž function-āĻāĨ¤

function memberPrice(amount) {
  return amount - Math.floor(amount / 10);
}

console.log("Rice: " + memberPrice(500));
console.log("Oil: " + memberPrice(1200));
console.log("Salt: " + memberPrice(85));
Rice: 450
Oil: 1080
Salt: 77

Output āĻšā§āĻŦāĻšā§ āφāϗ⧇āϰ āĻŽāϤ⧋, āϞāĻžāχāύ⧇ āϞāĻžāχāύ⧇āĨ¤ āύāĻŋāϝāĻŧāĻŽāϟāĻž āĻāĻ–āύ āĻĨāĻžāϕ⧇ āĻāĻ• āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ, āϤāĻžāχ āĻ›āĻžāĻĄāĻŧ āĻŦāĻĻāϞāĻžāϞ⧇ āĻŦāĻĻāϞāĻžāϤ⧇ āĻšāϝāĻŧ āĻāĻ•āϟāĻžāχ āϞāĻžāχāύāĨ¤ āĻŽāĻžāύ⧇, āϝ⧇ formula āϤ⧁āĻŽāĻŋ copy āĻ•āϰāϤ⧇, function āϏ⧇āϟāĻžāϕ⧇ āĻāĻ•āϟāĻž āύāĻžāĻŽ āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ, āϝ⧇āϟāĻž āϝ⧇āĻ–āĻžāύ⧇ āϖ⧁āĻļāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤

āĻāĻ•āϟāĻž function, āϤāĻŋāύ āϜāĻžāϝāĻŧāĻ—āĻž āĻĨ⧇āϕ⧇ call āĻāĻ•āĻŦāĻžāϰ āϞ⧇āĻ–āĻž, āϤāĻŋāύāĻŦāĻžāϰ call āĻ•āϰāĻž memberPrice(500) memberPrice(1200) memberPrice(85) function memberPrice(amount) return amount - Math.floor(amount / 10) body, āĻāĻ•āĻŦāĻžāϰāχ āϞ⧇āĻ–āĻž 450 1080 77 argument āĻĸā§‹āϕ⧇ return value āĻŦ⧇āϰ āĻšāϝāĻŧ āĻĒā§āϰāϤāĻŋāϟāĻž call āĻāĻ•āϟāĻž value āĻĒāĻžāĻ āĻžāϝāĻŧ, āĻāĻ•āϟāĻž value āĻĢ⧇āϰāϤ āĻĒāĻžāϝāĻŧāĨ¤ Body āĻāĻ•āĻŦāĻžāϰ āĻŦāĻĻāϞāĻžāϞ⧇ āϤāĻŋāύāϟāĻž āωāĻ¤ā§āϤāϰāχ āĻŦāĻĻāϞāĻžāϝāĻŧāĨ¤

Function define āĻ•āϰāĻž, āφāϰ call āĻ•āϰāĻž

function memberPrice(amount) { ... } āĻ…āĻ‚āĻļāϟāĻž āĻšāϞ⧋ definitionāĨ¤ āĻāϟāĻž code-āϟāĻžāϕ⧇ āĻāĻ•āϟāĻž āύāĻžāĻŽ āĻĻ⧇āϝāĻŧ āφāϰ āϰ⧇āϖ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āύāĻŋāĻœā§‡ āĻ•āĻŋāϛ⧁āχ āϚāĻžāϞāĻžāϝāĻŧ āύāĻž: āĻļ⧁āϧ⧁ definition āφāϛ⧇ āĻāĻŽāύ program āĻ•āĻŋāϛ⧁āχ print āĻ•āϰ⧇ āύāĻžāĨ¤

memberPrice(500) āĻ…āĻ‚āĻļāϟāĻž āĻšāϞ⧋ callāĨ¤ āύāĻžāĻŽā§‡āϰ āĻĒāϰ⧇āϰ bracket āĻŽāĻžāύ⧇ "āĻāĻ–āύāχ āϚāĻžāϞāĻžāĻ“"āĨ¤ Module 1-āĻ call āϤ⧁āĻŽāĻŋ āφāϗ⧇āχ āĻĻ⧇āϖ⧇āĻ›: console.log("hi") āĻšāϞ⧋ Node-āĻāϰ āϞ⧇āĻ–āĻž āĻāĻ•āϟāĻž function-āϕ⧇ call āĻ•āϰāĻžāĨ¤

function greet(name) {
  return "Hello, " + name;
}

console.log(greet("Zara"));
console.log(greet);
console.log(typeof greet);
Hello, Zara
[Function: greet]
function

āϞāĻžāχāύ 5 greet-āϕ⧇ call āĻ•āϰ⧇, āφāϰ āĻ“ āϝāĻž āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āϏ⧇āϟāĻž print āĻ•āϰ⧇āĨ¤ āϞāĻžāχāύ 6-āĻ bracket āύ⧇āχ, āϤāĻžāχ āĻ•āĻŋāϛ⧁āχ āϚāϞ⧇ āύāĻžāĨ¤ Node function-āϟāĻžāϕ⧇āχ print āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ [Function: greet] āĻšāĻŋāϏ⧇āĻŦ⧇āĨ¤ Function āĻāĻ•āϟāĻž value, āφāϰ typeof āĻ“āϰ type āĻŦāϞ⧇ "function"āĨ¤ āĻŽāĻžāύ⧇ āύāĻžāĻŽāϟāĻž āĻšāϞ⧋ āϰ⧇āϏāĻŋāĻĒāĻŋ, āφāϰ bracket-āϏāĻš āύāĻžāĻŽāϟāĻž āĻšāϞ⧋ āϰāĻžāĻ¨ā§āύāĻžāĨ¤

āĻāĻ•āϟāĻž function declaration, āφāϰ āĻāĻ•āϟāĻž call

function name(parameter1, parameter2) {
  body: the lines that run on every call
  return value;
}

name(argument1, argument2)     runs the body, and is replaced by the value returned
  • function āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ āĻāĻ•āϟāĻž function declaration, function āĻŦāĻžāύāĻžāύ⧋āϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϏ⧋āϜāĻž āωāĻĒāĻžāϝāĻŧāĨ¤
  • āύāĻžāĻŽāϟāĻž Module 1-āĻāϰ āĻ…āĻ­ā§āϝāĻžāϏ āĻŽāĻžāύ⧇: camelCase, āφāϰ āύāĻžāĻŽ āĻļ⧁āύ⧇āχ āĻŦā§‹āĻāĻž āϝāĻžāϝāĻŧ āϕ⧀ āĻĒāĻžāĻŦ⧇ āĻŦāĻž āϕ⧀ āĻ•āϰāĻŦ⧇āĨ¤
  • Parameter āĻšāϞ⧋ function āϝ⧇ value-āϗ⧁āϞ⧋ āĻĒāĻžāϝāĻŧ, āϏ⧇āϗ⧁āϞ⧋āϰ āύāĻžāĻŽāĨ¤ āĻāĻ•āϟāĻžāĻ“ āύāĻž āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇: function hello()āĨ¤
  • Body āĻĨāĻžāϕ⧇ āĻĻ⧁āχ brace-āĻāϰ āĻŽāĻžāĻā§‡, āφāϰ āϚāϞ⧇ āĻļ⧁āϧ⧁ function call āĻšāϞ⧇āĨ¤
  • return call-āϟāĻž āĻļ⧇āώ āĻ•āϰ⧇, āφāϰ āϝ⧇āĻ–āĻžāύ āĻĨ⧇āϕ⧇ call āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āϏ⧇āĻ–āĻžāύ⧇ āĻāĻ•āϟāĻž value āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤
  • Argument āĻšāϞ⧋ call-āĻāϰ bracket-āĻ āϞ⧇āĻ–āĻž value-āϗ⧁āϞ⧋āĨ¤

Parameter āφāϰ argument

parameter āĻšāϞ⧋ definition-āĻ āϞ⧇āĻ–āĻž āĻāĻ•āϟāĻž āύāĻžāĻŽ: memberPrice(amount)-āĻāϰ amountāĨ¤ argument āĻšāϞ⧋ call-āĻ āϞ⧇āĻ–āĻž value: memberPrice(500)-āĻāϰ 500āĨ¤ Call āĻļ⧁āϰ⧁ āĻšāϞ⧇āχ āĻĒā§āϰāϤāĻŋāϟāĻž parameter āĻĒāĻžāϝāĻŧ āĻāĻ•āχ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻŦāϏāĻž argument-āϟāĻžāĨ¤

function lineTotal(qty, price) {
  return qty * price;
}

console.log(lineTotal(3, 40));
console.log(lineTotal(40, 3));
console.log(lineTotal(2));
console.log(lineTotal(2, 5, 99));
120
120
NaN
10

āĻŽā§‡āϞāĻžāύ⧋ āĻšāϝāĻŧ āĻļ⧁āϧ⧁ āϜāĻžāϝāĻŧāĻ—āĻž āĻĻ⧇āϖ⧇, āύāĻžāĻŽ āĻĻ⧇āϖ⧇ āύāĻžāĨ¤ āϞāĻžāχāύ 6-āĻ value āĻĻ⧁āĻŸā§‹ āĻ…āĻĻāϞāĻŦāĻĻāϞ āĻšāϝāĻŧ⧇āϛ⧇, āĻŦāĻĻāϞ⧇āϛ⧇ āĻļ⧁āϧ⧁ āϗ⧁āϪ⧇āϰ āĻ•ā§āϰāĻŽāĨ¤ āϞāĻžāχāύ 7 āĻĻāĻŋāϝāĻŧ⧇āϛ⧇ āĻāĻ•āϟāĻžāχ argument, āϤāĻžāχ price āĻšāϞ⧋ undefined, Module 1-āĻāϰ āϏ⧇āχ "āϕ⧋āύ⧋ value āύ⧇āχ", āφāϰ 2 * undefined āĻšāϞ⧋ NaNāĨ¤

āϞāĻžāχāύ 8 āĻĻāĻŋāϝāĻŧ⧇āϛ⧇ āϤāĻŋāύāϟāĻžāĨ¤ āĻŦāĻžāĻĄāĻŧāϤāĻŋ 99-āĻāϰ āĻŦāϏāĻžāϰ āĻŽāϤ⧋ āϕ⧋āύ⧋ parameter āύ⧇āχ, āϤāĻžāχ function āĻ“āϟāĻž āĻĻ⧇āĻ–āϤ⧇āχ āĻĒāĻžāϝāĻŧ āύāĻžāĨ¤ āĻĻ⧁āχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āχ JavaScript āϕ⧋āύ⧋ error āĻĻ⧇āϝāĻŧ āύāĻžāĨ¤ āϤāĻžāχ argument āϗ⧁āύ⧇ āĻĻāĻžāĻ“: āĻ•āĻŽ āĻĻāĻŋāϞ⧇ āĻŦāĻžāĻ•āĻŋāϗ⧁āϞ⧋ undefined, āĻŦ⧇āĻļāĻŋ āĻĻāĻŋāϞ⧇ āĻŦāĻžāĻĄāĻŧāϤāĻŋāϗ⧁āϞ⧋ āĻŦāĻžāĻĻāĨ¤

return: āĻāĻ•āϟāĻž value āĻĢ⧇āϰāϤ, āφāϰ call āĻļ⧇āώ

return āĻāĻ•āϏāĻžāĻĨ⧇ āĻĻ⧁āĻŸā§‹ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ Call-āϕ⧇ āĻāĻ•āϟāĻž value āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ, āφāϰ call-āϟāĻž āϏ⧇āĻ–āĻžāύ⧇āχ āĻļ⧇āώ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āϝ⧇ return āϚāϞ⧇ āϗ⧇āϛ⧇, āϤāĻžāϰ āĻĒāϰ⧇āϰ āϕ⧋āύ⧋ āϞāĻžāχāύ āφāϰ āϚāϞ⧇ āύāĻžāĨ¤

function shippingFee(total) {
  if (total >= 1000) {
    return 0;
  }
  return 60;
}

function sayHi(name) {
  console.log("Hi, " + name);
}

console.log(shippingFee(1500));
console.log(shippingFee(400));
const result = sayHi("Kenji");
console.log(result);
0
60
Hi, Kenji
undefined

1500-āĻāϰ āĻŦ⧇āϞāĻžāϝāĻŧ āĻĒā§āϰāĻĨāĻŽ return āϚāϞ⧇, āφāϰ function āĻĨ⧇āĻŽā§‡ āϝāĻžāϝāĻŧ return 60-āĻ āĻĒ⧌āρāĻ›āĻžāύ⧋āϰ āφāϗ⧇āχāĨ¤ āĻāϕ⧇ āĻŦāϞ⧇ early return: āĻŦāĻŋāĻļ⧇āώ case-āϟāĻžāϰ āωāĻ¤ā§āϤāϰ āφāϗ⧇ āĻĻāĻŋāϝāĻŧ⧇ āĻŦ⧇āϰāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āĨ¤ Module 4 āϝ⧇ āĻŦāϞ⧇āĻ›āĻŋāϞ labelled break-āĻāϰ āĻ•āĻžāϜ āϛ⧋āϟ āĻāĻ•āϟāĻž function āφāϰ return āĻĻāĻŋāϝāĻŧ⧇āĻ“ āĻšāϝāĻŧ, āϏ⧇āϟāĻž āĻāϟāĻžāχāĨ¤

sayHi āĻāĻ•āϟāĻž āϞāĻžāχāύ print āĻ•āϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ“āϰ āϕ⧋āύ⧋ return āύ⧇āχāĨ¤ return āĻ›āĻžāĻĄāĻŧāĻž function-āĻāϰ call āĻĻ⧇āϝāĻŧ undefined, āφāϰ value āĻ›āĻžāĻĄāĻŧāĻž āĻ–āĻžāϞāĻŋ return;-āĻ“ āϤāĻžāχ āĻĻ⧇āϝāĻŧāĨ¤ Print āĻ•āϰāĻž āφāϰ return āĻ•āϰāĻž āĻĻ⧁āĻŸā§‹ āφāϞāĻžāĻĻāĻž āĻ•āĻžāϜāĨ¤ āϤāĻžāχ āϝ⧇ function-āĻāϰ āĻ•āĻžāϜ āωāĻ¤ā§āϤāϰ āĻŦ⧇āϰ āĻ•āϰāĻž, āĻ“āϕ⧇ āωāĻ¤ā§āϤāϰāϟāĻž return āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, console.log āύāĻžāĨ¤

Module 1-āĻāϰ āĻāĻ•āϟāĻž āύāĻŋāϝāĻŧāĻŽ āĻāĻŦāĻžāϰ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇āĨ¤ return-āĻāϰ āĻ āĻŋāĻ• āĻĒāϰ⧇ āϞāĻžāχāύ āĻ­āĻžāĻ™āϞ⧇ statement āϏ⧇āĻ–āĻžāύ⧇āχ āĻļ⧇āώ, āϤāĻžāχ āĻāĻ•āĻž āĻāĻ• āϞāĻžāχāύ⧇ return āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ undefinedāĨ¤ Value-āϟāĻž return-āĻāϰ āĻāĻ•āχ āϞāĻžāχāύ⧇ āϰāĻžāĻ–ā§‹āĨ¤ āϝ⧇ āϭ⧁āϞāϗ⧁āϞ⧋ āϏāĻŦāĻžāχ āĻ•āϰ⧇, āϤāĻžāϰ 3 āύāĻŽā§āĻŦāϰ⧇ bug-āϟāĻž āĻĻ⧇āĻ–āĻŦ⧇āĨ¤

āĻāĻ•āϟāĻž call āϚāϞāϤ⧇ āĻĻ⧇āĻ–āĻž

Call āĻļ⧁āϰ⧁ āĻšāϞ⧇ engine-āĻāϰ āĻāĻ•āϟāĻž āϜāĻžāϝāĻŧāĻ—āĻž āϞāĻžāϗ⧇, āϝ⧇āĻ–āĻžāύ⧇ āĻ“āχ call-āĻāϰ parameter-āϗ⧁āϞ⧋ āĻĨāĻžāĻ•āĻŦ⧇, āφāϰ āĻŽāύ⧇ āĻĨāĻžāĻ•āĻŦ⧇ āϕ⧋āĻĨāĻžāϝāĻŧ āĻĢāĻŋāϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ Engine āĻāϗ⧁āϞ⧋ āϰāĻžāϖ⧇ āĻāĻ•āϟāĻž frame-āĻ, āφāϰ āϝ⧇ call-āϗ⧁āϞ⧋ āĻāĻ–āύ⧋ āĻļ⧇āώ āĻšāϝāĻŧāύāĻŋ āϤāĻžāĻĻ⧇āϰ frame āĻĨāĻžāϞāĻžāϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻžāϰ āĻ“āĻĒāϰ āφāϰ⧇āĻ•āϟāĻž āϜāĻŽā§‡: āĻāϟāĻžāχ call stackāĨ¤ Call āĻšāϞ⧇ āĻāĻ•āϟāĻž frame āĻ“āĻĒāϰ⧇ āĻŦāϏ⧇; return āĻšāϞ⧇ āĻ“āϟāĻž āύāĻžāĻŽāĻŋāϝāĻŧ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤

āĻāχ program receipt-āĻāϰ āĻāĻ•āϟāĻž āϞāĻžāχāύ print āĻ•āϰ⧇āĨ¤ printLine āύāĻŋāĻœā§‡āϰ āĻ•āĻžāĻœā§‡āϰ āĻŽāĻžāĻāĻĒāĻĨ⧇ lineTotal-āϕ⧇ call āĻ•āϰ⧇āĨ¤

function lineTotal(qty, price) {
  return qty * price;
}

function printLine(item, qty, price) {
  console.log(item + ": " + lineTotal(qty, price));
}

printLine("tea", 3, 40);
console.log("done");
tea: 120
done

āĻāĻŦāĻžāϰ call-āϗ⧁āϞ⧋ āϧāĻžāĻĒ⧇ āϧāĻžāĻĒ⧇ āϚāĻžāϞāĻžāĻ“āĨ¤ āĻĻ⧇āĻ–ā§‹ āĻĒā§āϰāϤāĻŋāϟāĻž frame āύāĻŋāĻœā§‡āϰ parameter āύāĻŋāϝāĻŧ⧇ āφāϏ⧇, āφāϰ āύāĻŋāĻœā§‡āϰ return value āύāĻŋāϝāĻŧ⧇ āĻŦāĻŋāĻĻāĻžāϝāĻŧ āύ⧇āϝāĻŧāĨ¤

Program call āĻ•āϰ⧇ printLine("tea", 3, 40), āϝāĻžāϰ frame-āĻ āĻĨāĻžāϕ⧇ item, qty āφāϰ priceāĨ¤ printLine call āĻ•āϰ⧇ lineTotal(3, 40), āϝāĻžāϰ frame-āĻ āĻĨāĻžāϕ⧇ āĻ“āϰ āύāĻŋāĻœā§‡āϰ qty āφāϰ priceāĨ¤ lineTotal 120 return āĻ•āϰ⧇ āφāϰ āϏāĻŦāĻžāϰ āφāϗ⧇ āϏāϰ⧇ āϝāĻžāϝāĻŧ; printLine print āĻ•āϰ⧇ tea: 120, undefined return āĻ•āϰ⧇ āϏāϰ⧇ āϝāĻžāϝāĻŧ; āϤāĻžāϰāĻĒāϰ program print āĻ•āϰ⧇ doneāĨ¤

Frame, āύāĻŋāϚ āĻĨ⧇āϕ⧇ āĻ“āĻĒāϰ⧇āϭ⧇āϤāϰ⧇ āϕ⧀ āĻĨāĻžāϕ⧇āϕ⧀ return āĻ•āϰ⧇
āĻŽā§‚āϞ programāϞāĻžāχāύ 9 call āĻ•āϰ⧇ printLine("tea", 3, 40)(āϚāϞ⧇ āϝāĻžāϝāĻŧ āϞāĻžāχāύ 10-āĻ)
printLine(item, qty, price)item = "tea", qty = 3, price = 40; call āĻ•āϰ⧇ lineTotal(3, 40)undefined, tea: 120 print āĻ•āϰāĻžāϰ āĻĒāϰ
lineTotal(qty, price)qty = 3, price = 40120

āϝ⧇ frame āϏāĻŦāĻžāϰ āĻļ⧇āώ⧇ āĻĸā§‹āϕ⧇, āϏ⧇-āχ āϏāĻŦāĻžāϰ āφāϗ⧇ āĻŦ⧇āϰ āĻšāϝāĻŧāĨ¤ lineTotal return āύāĻž āĻ•āϰāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ printLine āύāĻŋāĻœā§‡āϰ āϞāĻžāχāύāϟāĻž āĻļ⧇āώ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤ āĻŽāĻžāύ⧇, āĻāĻ•āϟāĻž call āĻ“āϰ āϭ⧇āϤāϰ⧇āϰ āĻĒā§āϰāϤāĻŋāϟāĻž call-āĻāϰ āϜāĻ¨ā§āϝ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧇, āφāϰ call stack āĻšāϞ⧋ āĻāĻ–āύ⧋ āĻ…āĻĒ⧇āĻ•ā§āώāĻžāϝāĻŧ āĻĨāĻžāĻ•āĻž call-āϗ⧁āϞ⧋āϰ āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤

Function-āĻāϰ āύāĻžāĻŽāϗ⧁āϞ⧋ āĻ“āϰ āύāĻŋāĻœā§‡āϰ

āĻĒā§āϰāϤāĻŋāϟāĻž call āύāϤ⧁āύ āĻ•āϰ⧇ parameter āĻĒāĻžāϝāĻŧ, āφāϰ body-āϰ āϭ⧇āϤāϰ⧇ āĻŦāĻžāύāĻžāύ⧋ let āĻŦāĻž const-āĻ“ āĻ“āχ call-āĻāϰāχāĨ¤ Function-āĻāϰ āĻŦāĻžāχāϰ⧇ āĻāχ āύāĻžāĻŽāϗ⧁āϞ⧋āϰ āϕ⧋āύ⧋ āĻ…āĻ¸ā§āϤāĻŋāĻ¤ā§āĻŦ āύ⧇āχāĨ¤

function average(a, b) {
  const sum = a + b;
  return sum / 2;
}

console.log(average(4, 10));
console.log(typeof sum);
7
undefined

sum āĻ›āĻŋāϞ call-āĻāϰ āϭ⧇āϤāϰ⧇, call āĻļ⧇āώ āĻšāϤ⧇āχ āĻ“āϟāĻžāĻ“ āϗ⧇āϛ⧇āĨ¤ āϝ⧇ āύāĻžāĻŽā§‡āϰ āĻ…āĻ¸ā§āϤāĻŋāĻ¤ā§āĻŦāχ āύ⧇āχ, āϤāĻžāϰ āĻ“āĻĒāϰ typeof error āύāĻž āĻĻāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ "undefined"āĨ¤ āĻŽāĻžāύ⧇ function āĻāĻ•āϟāĻž āĻŦāĻ¨ā§āϧ āĻŦāĻžāĻ•ā§āϏ: value āĻĸā§‹āϕ⧇ parameter āĻĻāĻŋāϝāĻŧ⧇, āφāϰ āĻāĻ•āϟāĻž value āĻŦ⧇āϰ āĻšāϝāĻŧ return āĻĻāĻŋāϝāĻŧ⧇āĨ¤ āĻāĻ•āϟāĻž āύāĻžāĻŽ āϕ⧋āĻĨāĻž āĻĨ⧇āϕ⧇ āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧ, āϤāĻžāϕ⧇ āĻŦāϞ⧇ āĻ“āϰ scope, āφāϰ āϏ⧇āϟāĻž āĻļ⧇āĻ–āĻžāĻŦ⧇ Module 6āĨ¤

āϤāĻŋāύ āϰāĻ•āĻŽ āϞ⧇āĻ–āĻž, āφāϰ āϤ⧋āĻŽāĻžāϰ starter-āĻāϰ āĻĻ⧁āĻŸā§‹

JavaScript-āĻ function āϞ⧇āĻ–āĻžāϰ āϤāĻŋāύāϟāĻž āωāĻĒāĻžāϝāĻŧ āφāϛ⧇āĨ¤ āϤāĻŋāύāϟāĻžāχ āĻāĻ•āχ āϧāϰāύ⧇āϰ value āĻŦāĻžāύāĻžāϝāĻŧ, āφāϰ call-āĻ“ āĻ•āϰ⧋ āĻāĻ•āχāĻ­āĻžāĻŦ⧇āĨ¤

function halfA(n) {
  return n / 2;
}

const halfB = function (n) {
  return n / 2;
};

const halfC = (n) => n / 2;

console.log(halfA(9), halfB(9), halfC(9));
4.5 4.5 4.5

āĻĒā§āϰāĻĨāĻŽāϟāĻž function declarationāĨ¤ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧāϟāĻž function expression: value āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻžāύāĻžāύ⧋ āĻāĻ•āϟāĻž function, āϰāĻžāĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻ•āϟāĻž const-āĻāĨ¤ āϤ⧃āϤ⧀āϝāĻŧāϟāĻž arrow function: āφāϗ⧇ parameter, āϤāĻžāϰāĻĒāϰ =>, āϤāĻžāϰāĻĒāϰ āϝ⧇ value āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇āĨ¤ Brace āύāĻž āĻĨāĻžāĻ•āϞ⧇ arrow return āĻļāĻŦā§āĻĻ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻ“āχ value āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

āĻāĻŦāĻžāϰ starter-āĻāϰ āϏ⧇āχ āĻĻ⧁āĻŸā§‹ āϞāĻžāχāύ āĻĒāĻĄāĻŧā§‹, āϝ⧇āϗ⧁āϞ⧋ Module 1 āĻŦāϞ⧇āĻ›āĻŋāϞ āφāĻĒāĻžāϤāϤ āϝ⧇āĻŽāύ āφāϛ⧇ āϤ⧇āĻŽāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇āĨ¤

const tokens = ["7", "3"];
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());

console.log(nextInt() + nextInt());
console.log(at);
10
2

next āĻšāϞ⧋ parameter āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āϟāĻž arrow function, āϤāĻžāχ āĻ“āϰ bracket āĻ–āĻžāϞāĻŋāĨ¤ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ call āĻ•āϰāϞ⧇ āĻ“ at āϜāĻžāϝāĻŧāĻ—āĻžāϰ token-āϟāĻž āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ, āφāϰ at++ āϜāĻžāϝāĻŧāĻ—āĻžāϟāĻž āĻāĻ• āϘāϰ āĻāĻ—āĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ nextInt call āĻ•āϰ⧇ next-āϕ⧇, āφāϰ āĻ“āϰ token-āϟāĻžāϕ⧇ āϏāĻ‚āĻ–ā§āϝāĻž āĻŦāĻžāύāĻžāϝāĻŧāĨ¤ āĻŽāĻžāύ⧇ starter-āĻāϰ helper āĻĻ⧁āĻŸā§‹ āφāϏāϞ⧇ āĻĻ⧁āĻŸā§‹ āϛ⧋āϟ function, āĻāĻ•āϟāĻž āφāϰ⧇āĻ•āϟāĻžāϕ⧇ call āĻ•āϰ⧇āĨ¤

āϤāĻŋāύ āϰāĻ•āĻŽ āϞ⧇āĻ–āĻžāϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āĻĻ⧁āχ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ, āϝ⧇āϟāĻž āĻĒāϰ⧇ āĻ•āĻžāĻœā§‡ āϞāĻžāĻ—āĻŦ⧇: file-āĻāϰ āϕ⧋āĻĨāĻž āĻĨ⧇āϕ⧇ āĻ“āĻĻ⧇āϰ call āĻ•āϰāĻž āϝāĻžāϝāĻŧ, āφāϰ this āύāĻžāĻŽā§‡āϰ āĻāĻ•āϟāĻž āĻļāĻŦā§āĻĻ (Module 9)āĨ¤ Lesson 02 āĻĒā§āϰāϤāĻŋāϟāĻž āϰ⧂āĻĒ āϖ⧁āϞ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇, āφāϰ lesson 04 āĻŦāϞāĻŦ⧇ āĻ•āĻ–āύ āϕ⧋āύāϟāĻž āύ⧇āĻŦ⧇āĨ¤

Example 1: āĻāĻ•āϟāĻž greeting āĻŦāĻžāύāĻžāύ⧋āϰ function

āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϛ⧋āϟ āĻ•āĻžāĻœā§‡āϰ function: āĻāĻ•āϟāĻž parameter āĻĸā§‹āϕ⧇, āĻāĻ•āϟāĻž string āĻŦ⧇āϰ āĻšāϝāĻŧāĨ¤

function greet(name) {
  return `Hello, ${name}!`;
}

console.log(greet("Zara"));
console.log(greet("Kenji"));
const line = greet("Amara");
console.log(line.length);
Hello, Zara!
Hello, Kenji!
13

Call āύāĻŋāĻœā§‡āχ āĻāĻ•āϟāĻž expression, āϤāĻžāχ āĻ“āϰ value print āĻ•āϰāĻž āϝāĻžāϝāĻŧ, āϕ⧋āύ⧋ āύāĻžāĻŽā§‡ āϰāĻžāĻ–āĻž āϝāĻžāϝāĻŧ, āĻŦāĻž āϏ⧇āĻ–āĻžāύ⧇āχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ line-āĻ āφāϛ⧇ āϤ⧃āϤ⧀āϝāĻŧ call-āĻāϰ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž string, āφāϰ line.length āĻ“āϰ 13āϟāĻž āĻŦāĻžāĻ•ā§āϏ āĻ—ā§‹āύ⧇āĨ¤

Run in Compiler
Example 2: āĻĻ⧁āĻŸā§‹ parameter āφāϰ āĻāĻ•āϟāĻž early return

David-āĻāϰ delivery fee āĻĻ⧁āĻŸā§‹ āϜāĻŋāύāĻŋāϏ⧇āϰ āĻ“āĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇: customer member āĻ•āĻŋ āύāĻž, āφāϰ order-āĻāϰ āĻŽā§‹āϟ āĻĻāĻžāĻŽāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āĻŦāĻŋāĻļ⧇āώ case āφāϗ⧇ āωāĻ¤ā§āϤāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻŦ⧇āϰāĻŋāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤

function deliveryFee(total, isMember) {
  if (isMember) {
    return 0;
  }
  if (total >= 1000) {
    return 0;
  }
  if (total >= 500) {
    return 30;
  }
  return 60;
}

console.log(deliveryFee(300, true));
console.log(deliveryFee(1200, false));
console.log(deliveryFee(700, false));
console.log(deliveryFee(150, false));
0
0
30
60

āϕ⧋āύ⧋ else āϞāĻžāϗ⧇ āύāĻž: āĻāĻ•āĻŦāĻžāϰ āĻāĻ•āϟāĻž return āϚāϞ⧇ āϗ⧇āϞ⧇ āϤāĻžāϰ āύāĻŋāĻšā§‡āϰ āϞāĻžāχāύāϗ⧁āϞ⧋ āφāϰ āϚāϞ⧇ āύāĻžāĨ¤ āĻ“āĻĒāϰ āĻĨ⧇āϕ⧇ āύāĻŋāĻšā§‡ āĻĒāĻĄāĻŧāϞ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž check āĻļ⧁āϧ⧁ āϏ⧇āχ case-āϗ⧁āϞ⧋ āĻĻ⧇āϖ⧇, āϝ⧇āϗ⧁āϞ⧋āϰ āωāĻ¤ā§āϤāϰ āĻ“āĻĒāϰ⧇āϰ check-āϗ⧁āϞ⧋ āĻĻ⧇āϝāĻŧāύāĻŋāĨ¤

Run in Compiler
Example 3: Amara-āϰ receipt

Amara-āϰ āφāϏāϞ program fixed starter āĻĻāĻŋāϝāĻŧ⧇ input āĻĨ⧇āϕ⧇ item-āϗ⧁āϞ⧋ āĻĒāĻĄāĻŧ⧇āĨ¤ āĻĻ⧁āĻŸā§‹ āϛ⧋āϟ function āĻšāĻŋāϏāĻžāĻŦāϟāĻž āĻ•āϰ⧇, āφāϰ loop āĻĒā§āϰāϤāĻŋāϟāĻž item-āĻāϰ āϜāĻ¨ā§āϝ āĻ“āĻĻ⧇āϰ āĻāĻ•āĻŦāĻžāϰ āĻ•āϰ⧇ call āĻ•āϰ⧇āĨ¤ Member-āĻāϰ āĻ›āĻžāĻĄāĻŧ āĻāĻ–āύ āĻĨāĻžāϕ⧇ āĻāĻ• āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

function lineTotal(qty, price) {
  return qty * price;
}

function memberPrice(amount) {
  return amount - Math.floor(amount / 10);
}

const n = nextInt();
let total = 0;
for (let i = 0; i < n; i++) {
  const item = next();
  const qty = nextInt();
  const price = nextInt();
  const cost = memberPrice(lineTotal(qty, price));
  out.push(`${item} x${qty}: ${cost}`);
  total += cost;
}
out.push(`total: ${total}`);

console.log(out.join("\n"));
rice x2: 900
oil x1: 1080
salt x3: 230
total: 2210

āĻāχ output input 3, āϤāĻžāϰāĻĒāϰ āϤāĻŋāύ āϞāĻžāχāύ⧇ rice 2 500, oil 1 1200 āφāϰ salt 3 85-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ memberPrice(lineTotal(qty, price)) āĻāĻ•āϟāĻž function call āĻ•āϰ⧇ āĻ“āϰ āωāĻ¤ā§āϤāϰ āϏ⧋āϜāĻž āφāϰ⧇āĻ•āϟāĻžāϰ āĻšāĻžāϤ⧇ āĻĻ⧇āϝāĻŧ: 3 āϗ⧁āĻŖ 85 āĻšāϞ⧋ 255, āφāϰ 255 āĻĨ⧇āϕ⧇ 25 āĻŦāĻžāĻĻ āĻĻāĻŋāϞ⧇ 230āĨ¤

Run in Compiler

āĻāϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇

  • Starter-āĻāϰ āĻĒā§āϰāĻĨāĻŽ āϞāĻžāχāύāĨ¤ require("fs").readFileSync(0, "utf8") Node-āĻāϰ āύāĻŋāĻœā§‡āϰ file module-āĻāϰ āĻāĻ•āϟāĻž function call āĻ•āϰ⧇āĨ¤ Node-āĻāϰ team āĻ“āϟāĻž āĻāĻ•āĻŦāĻžāϰ āϞāĻŋāϖ⧇āϛ⧇, āφāϰ judge-āĻāϰ āĻĒā§āϰāϤāĻŋāϟāĻž JavaScript program āĻ“āϟāĻž call āĻ•āϰ⧇āĨ¤
  • Express, Node-āĻāϰ āĻāĻ•āϟāĻž web serverāĨ¤ āϤ⧁āĻŽāĻŋ app.get("/", ...)-āĻāϰ āĻšāĻžāϤ⧇ āĻāĻ•āϟāĻž function āĻĻāĻžāĻ“, āφāϰ āĻ“āχ āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āϝāϤ request āφāϏ⧇, āĻĒā§āϰāϤāĻŋāϟāĻžāϰ āϜāĻ¨ā§āϝ Express āĻ“āϟāĻž āĻāĻ•āĻŦāĻžāϰ call āĻ•āϰ⧇āĨ¤
  • AWS LambdaāĨ¤ Amazon-āĻāϰ āĻāχ service āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāĻ•āϟāĻž event āĻāϞ⧇ export āĻ•āϰāĻž āĻāĻ•āϟāĻž JavaScript function āϚāĻžāϞāĻžāϝāĻŧ, āϝāĻžāϰ āύāĻžāĻŽ handlerāĨ¤ Event-āĻāϰ āϜāĻ¨ā§āϝ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ loop āϤ⧋āĻŽāĻžāϕ⧇ āĻ•āĻ–āύ⧋ āϞāĻŋāĻ–āϤ⧇ āĻšāϝāĻŧ āύāĻžāĨ¤
  • Sort āĻ•āϰāĻžāĨ¤ Array.prototype.sort āĻĻ⧁āĻŸā§‹ item āϤ⧁āϞāύāĻž āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻž function āύ⧇āϝāĻŧ, āφāϰ āϝāϤāĻŦāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āϤāϤāĻŦāĻžāϰ āĻ“āϟāĻž call āĻ•āϰ⧇āĨ¤ Module 3 āĻāϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋāϞ localeCompare-āĻāϰ āϏāĻžāĻĨ⧇, āφāϰ Module 7 āĻāϟāĻž āĻļ⧇āĻ–āĻžāĻŦ⧇āĨ¤

āϝ⧇ āϭ⧁āϞāϗ⧁āϞ⧋ āϏāĻŦāĻžāχ āĻ•āϰ⧇

ā§§. Bracket āĻĻāĻŋāϤ⧇ āϭ⧁āϞ⧇ āϝāĻžāĻ“āϝāĻŧāĻžāĨ¤

function today() {
  return "Monday";
}
console.log("Today is " + today);
console.log("Today is " + today());
Today is function today() {
  return "Monday";
}
Today is Monday

Bracket āĻ›āĻžāĻĄāĻŧāĻž āĻ•āĻŋāϛ⧁āχ call āĻšāϝāĻŧ āύāĻžāĨ¤ String-āĻāϰ āϏāĻžāĻĨ⧇ āϜ⧁āĻĄāĻŧāϞ⧇ function āύāĻŋāĻœā§‡āϰ source code āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āϚāĻžāϞāĻžāϤ⧇ āϚāĻžāχāϞ⧇ āϞ⧇āĻ–ā§‹ today()āĨ¤ āĻāϟāĻž āϭ⧁āϞāĻŦ⧇, āĻ•āĻžāϰāĻŖ āĻļ⧁āϧ⧁ āύāĻžāĻŽāϟāĻžāχ āĻĻ⧇āĻ–āϤ⧇ āϤ⧋āĻŽāĻžāϰ āϚāĻžāĻ“āϝāĻŧāĻž āϜāĻŋāύāĻŋāϏ⧇āϰ āĻŽāϤ⧋ āϞāĻžāϗ⧇āĨ¤

⧍. āωāĻ¤ā§āϤāϰ return āύāĻž āĻ•āϰ⧇ print āĻ•āϰāĻžāĨ¤

function addTax(price) {
  console.log(price + 15);
}
const total = addTax(100);
console.log(total * 2);
115
NaN

Function screen-āĻ 115 āĻĻ⧇āĻ–āĻžāϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ undefinedāĨ¤ undefined * 2 āĻšāϞ⧋ NaNāĨ¤ āϞ⧇āĻ–ā§‹ return price + 15;, āφāϰ print āĻ•āϰāĻžāϰ āĻ•āĻžāϜāϟāĻž āϝ⧇ call āĻ•āϰāϛ⧇ āϤāĻžāϕ⧇ āĻĻāĻžāĻ“āĨ¤ Test āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ print āĻšāĻ“āϝāĻŧāĻž āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻž āωāĻ¤ā§āϤāϰ⧇āϰ āĻŽāϤ⧋āχ āĻĻ⧇āĻ–āĻžāϝāĻŧ, āϤāĻžāχ āĻāχ āϭ⧁āϞāϟāĻž āĻšāϝāĻŧāĨ¤

ā§Š. āĻāĻ•āĻž āĻāĻ• āϞāĻžāχāύ⧇ returnāĨ¤

function welcome(name) {
  return
    "Welcome back, " + name;
}
console.log(welcome("Maria"));
undefined

āϕ⧋āύ⧋ error āύ⧇āχ, āĻļ⧁āϧ⧁ undefinedāĨ¤ return-āĻāϰ āĻĒāϰ⧇āϰ āϞāĻžāχāύ āĻ­āĻžāĻ™āĻž statement-āϟāĻž āĻļ⧇āώ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ, āϤāĻžāχ āύāĻŋāĻšā§‡āϰ string-āĻ āĻ•āĻ–āύ⧋ āĻĒ⧌āρāĻ›āĻžāύ⧋ āĻšāϝāĻŧ āύāĻžāĨ¤ Value-āϟāĻž āĻāĻ•āχ āϞāĻžāχāύ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧋: return "Welcome back, " + name;āĨ¤ āϞāĻŽā§āĻŦāĻž value āĻĻ⧇āĻ–āϞ⧇ āύāϤ⧁āύ āϞāĻžāχāύ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āϞ⧋āĻ­ āĻšāϝāĻŧ, āϤāĻ–āύāχ āĻāϟāĻž āϞāĻŋāϖ⧇ āĻĢ⧇āϞāĻŦ⧇āĨ¤

ā§Ē. āĻ•āĻŽ argument āĻĻāĻŋāϝāĻŧ⧇ call āĻ•āϰāĻžāĨ¤

function area(width, height) {
  return width * height;
}
console.log(area(5));
NaN

height āϕ⧋āύ⧋ argument āĻĒāĻžāϝāĻŧāύāĻŋ, āϤāĻžāχ āĻ“ undefined, āφāϰ 5 * undefined āĻšāϞ⧋ NaNāĨ¤ āĻĻ⧁āĻŸā§‹āχ āĻĻāĻžāĻ“: area(5, 5)āĨ¤ āϝ⧇ parameter caller āĻŦāĻžāĻĻ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇, āϤāĻžāϰ āϜāĻ¨ā§āϝ default value āϕ⧀āĻ­āĻžāĻŦ⧇ āĻĻ⧇āϝāĻŧ, lesson 02 āĻĻ⧇āĻ–āĻžāĻŦ⧇āĨ¤ Function-āĻ āύāϤ⧁āύ parameter āϝ⧋āĻ— āĻ•āϰ⧇ āĻĒ⧁āϰ⧋āύ⧋ āϕ⧋āύ⧋ call āĻŦāĻĻāϞāĻžāϤ⧇ āϭ⧁āϞ⧇ āϗ⧇āϞ⧇ āĻāϟāĻž āĻšāϝāĻŧāĨ¤

āĻŽāĻžāĻĨāĻž āĻ–āĻžāϟāĻžāĻ“

Bob āĻ­āĻžāĻŦāϛ⧇ āĻāχ program a āφāϰ b print āĻ•āϰāĻŦ⧇āĨ¤

function check() {
  console.log("a");
  return;
  console.log("b");
}
console.log(check());

āφāϏāϞ⧇ āϞāĻžāχāύ⧇ āϞāĻžāχāύ⧇ āϕ⧀ print āĻ•āϰ⧇, āφāϰ āĻļ⧇āώ āϞāĻžāχāύāϟāĻž āφāĻĻ⧌ āĻ•āĻŋāϛ⧁ print āĻ•āϰ⧇ āϕ⧇āύ?

āĻāĻ–āĻžāύ⧇ āĻĻ⧁āĻŸā§‹ āφāϞāĻžāĻĻāĻž āϞāĻžāχāύ console.log call āĻ•āϰ⧇āĨ¤ āĻāĻ•āϟāĻž āϚāϞ⧇ function-āĻāϰ āϭ⧇āϤāϰ⧇, āφāϰ⧇āĻ•āϟāĻž print āĻ•āϰ⧇ call-āϟāĻž āϝāĻž āĻĢ⧇āϰāϤ āĻĻāĻŋāϞāĨ¤

āĻ…āύ⧁āĻļā§€āϞāύ ā§§āϏāĻšāϜ

Alice āϘāϰ⧇āϰ āĻŽā§‡āĻā§‡āϰ tile-āĻāϰ āĻĻāĻžāĻŽ āĻ āĻŋāĻ• āĻ•āϰ⧇ āĻ•ā§āώ⧇āĻ¤ā§āϰāĻĢāϞ āĻĻ⧇āϖ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āϘāϰ āĻšāϝāĻŧ āφāϝāĻŧāϤāĻ•ā§āώ⧇āĻ¤ā§āϰ, āύāϝāĻŧ āĻŦāĻ°ā§āĻ—āĻ•ā§āώ⧇āĻ¤ā§āϰ, āύāϝāĻŧ āϏāĻŽāϕ⧋āĻŖā§€ āĻ¤ā§āϰāĻŋāϭ⧁āϜāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āφāĻ•āĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻž āĻ•āϰ⧇ āϛ⧋āϟ function āϞ⧇āĻ–ā§‹, āφāϰ āĻĒā§āϰāϤāĻŋāϟāĻž āϘāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ āĻŋāĻ•āϟāĻž call āĻ•āϰ⧋āĨ¤

Input. n, āϤāĻžāϰāĻĒāϰ n-āϟāĻž āφāĻ•āĻžāϰ, āĻĒā§āϰāϤāĻŋāϟāĻž āĻāĻ•āϟāĻž āĻļāĻŦā§āĻĻ āφāϰ āĻ“āϰ āĻŽāĻžāĻĒ: rect w h, square s āĻŦāĻž triangle b h (āĻ­ā§‚āĻŽāĻŋ āφāϰ āωāĻšā§āϚāϤāĻž)āĨ¤

Output. āĻĒā§āϰāϤāĻŋāϟāĻž āφāĻ•āĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ• āϞāĻžāχāύ: āĻ“āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰāĻĢāϞ, JavaScript āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻž āϝ⧇āĻ­āĻžāĻŦ⧇ print āĻ•āϰ⧇ āϏ⧇āĻ­āĻžāĻŦ⧇āĨ¤ āĻ¤ā§āϰāĻŋāϭ⧁āĻœā§‡āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰāĻĢāϞ⧇āϰ āĻļ⧇āώ⧇ .5 āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

Constraints. 1 <= n <= 100000āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āĻŽāĻžāĻĒ 1 āĻĨ⧇āϕ⧇ 10000-āĻāϰ āĻāĻ•āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāĨ¤

Sample. āĻĒāĻžāρāϚ āϞāĻžāχāύ⧇ input 4, rect 3 4, square 5, triangle 3 5 āφāϰ rect 1 1 āĻĻāĻŋāϞ⧇ āφāϏ⧇ 12, 25, 7.5 āφāϰ 1āĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

// your code: read with next() and nextInt(), push every line of output to out

console.log(out.join("\n"));

Grade āĻšāĻŦ⧇ shape-areas āĻšāĻŋāϏ⧇āĻŦ⧇āĨ¤ Hidden test-āĻ āφāϛ⧇ āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻž āϘāϰ, āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āĻŽāĻžāĻĒ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž āφāĻ•āĻžāϰ, āφāϰ āĻāĻŽāύ āĻ¤ā§āϰāĻŋāϭ⧁āϜ āϝāĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰāĻĢāϞ āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž āύāĻžāĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ⧍āĻŽāĻžāĻāĻžāϰāĻŋ

Bob-āĻāϰ āĻŦāĻ¨ā§āϧ⧁āϰāĻž restaurant-āĻāϰ bill āĻ­āĻžāĻ— āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āϏāĻŦāĻžāχ āĻāĻ•āχ āĻĒā§‚āĻ°ā§āĻŖ āϟāĻžāĻ•āĻž āĻĻ⧇āϝāĻŧ, āĻ“āĻĒāϰ⧇āϰ āĻĻāĻŋāϕ⧇ round āĻ•āϰ⧇, āϝāĻžāϤ⧇ bill āϏāĻŦāϏāĻŽāϝāĻŧ āĻŽāĻŋāĻŸā§‡ āϝāĻžāϝāĻŧāĨ¤ share(total, people) āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻž function āϞ⧇āĻ–ā§‹, āφāϰ āĻĒā§āϰāϤāĻŋāϟāĻž bill-āĻāϰ āϜāĻ¨ā§āϝ āĻ“āϟāĻž call āĻ•āϰ⧋āĨ¤

Input. n, āϤāĻžāϰāĻĒāϰ n-āϟāĻž bill, āĻĒā§āϰāϤāĻŋāϟāĻžāϝāĻŧ āĻŽā§‹āϟ āϟāĻžāĻ•āĻž āφāϰ āĻŽāĻžāύ⧁āώ⧇āϰ āϏāĻ‚āĻ–ā§āϝāĻžāĨ¤

Output. āĻĒā§āϰāϤāĻŋāϟāĻž bill-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ• āϞāĻžāχāύ: āĻĒā§āϰāĻ¤ā§āϝ⧇āϕ⧇ āĻ•āϤ āĻĻ⧇āĻŦ⧇, āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻž space āφāϰ tip āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ•āϤ āĻŦāĻžāĻĄāĻŧāϤāĻŋ āĻĨāĻžāϕ⧇āĨ¤

Constraints. 1 <= n <= 1000āĨ¤ āĻŽā§‹āϟ āϟāĻžāĻ•āĻž 1 āĻĨ⧇āϕ⧇ 1000000-āĻāϰ āĻāĻ•āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž, āφāϰ āĻŽāĻžāύ⧁āώ 1 āĻĨ⧇āϕ⧇ 50 āϜāύāĨ¤

Sample. āϤāĻŋāύ āϞāĻžāχāύ⧇ input 2, 1000 3 āφāϰ 900 3 āĻĻāĻŋāϞ⧇ āφāϏ⧇ 334 2 āφāϰ 300 0āĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

// your code: read with next() and nextInt(), push every line of output to out

console.log(out.join("\n"));

āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ grade āĻšāϝāĻŧ āύāĻžāĨ¤ Math.ceil āĻ“āĻĒāϰ⧇āϰ āĻĻāĻŋāϕ⧇ round āĻ•āϰ⧇āĨ¤ āĻŦāĻžāĻĄāĻŧāϤāĻŋ āĻ…āĻ‚āĻļāϟāĻž āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āĻ­āĻžāĻ—āϟāĻž āϞāĻžāĻ—āĻŦ⧇, āϤāĻžāχ share āĻāĻ•āĻŦāĻžāϰ call āĻ•āϰ⧇ āωāĻ¤ā§āϤāϰāϟāĻž āĻāĻ•āϟāĻž const-āĻ āϰ⧇āϖ⧇ āĻĻāĻžāĻ“āĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ā§ŠāĻ•āĻ āĻŋāύ

Zara-āϰ app āϕ⧋āύ⧋ password āύ⧇āĻ“āϝāĻŧāĻžāϰ āφāϗ⧇ āϏ⧇āϟāĻž āϝāĻžāϚāĻžāχ āĻ•āϰ⧇āĨ¤ āĻļāĻ•ā§āϤ password-āĻ āĻ…āĻ¨ā§āϤāϤ 8āϟāĻž character, āĻ…āĻ¨ā§āϤāϤ āĻāĻ•āϟāĻž digit āφāϰ āĻ…āĻ¨ā§āϤāϤ āĻāĻ•āϟāĻž āĻŦāĻĄāĻŧ āĻšāĻžāϤ⧇āϰ āĻ…āĻ•ā§āώāϰ āĻĨāĻžāϕ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āύāĻŋāϝāĻŧāĻŽā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻž function āϞ⧇āĻ–ā§‹, āϝ⧇āϟāĻž true āĻŦāĻž false āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ, āφāϰ āϚāϤ⧁āĻ°ā§āĻĨ āĻāĻ•āϟāĻž function āϞ⧇āĻ–ā§‹ āϝ⧇āϟāĻž āĻ“āχ āϤāĻŋāύāϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

Input. n, āϤāĻžāϰāĻĒāϰ ASCII āĻ…āĻ•ā§āώāϰ āφāϰ digit āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻžāύāĻžāύ⧋ n-āϟāĻž passwordāĨ¤

Output. āĻĒā§āϰāϤāĻŋāϟāĻž password-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ• āϞāĻžāχāύ: strong, āύāϝāĻŧāϤ⧋ weak: āφāϰ āϤāĻžāϰ āĻĒāϰ⧇ length, digit āφāϰ capital-āĻāϰ āĻŽāĻ§ā§āϝ⧇ āϝ⧇ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞ⧋ āĻŽāĻžāύāĻž āĻšāϝāĻŧāύāĻŋ, āĻāχ āĻ•ā§āϰāĻŽā§‡āχ, āĻāĻ•āϟāĻž comma āφāϰ āĻāĻ•āϟāĻž space āĻĻāĻŋāϝāĻŧ⧇ āφāϞāĻžāĻĻāĻž āĻ•āϰāĻžāĨ¤

Constraints. 1 <= n <= 1000āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž password-āĻ 1 āĻĨ⧇āϕ⧇ 40āϟāĻž characterāĨ¤

Sample. Input 3, āϤāĻžāϰāĻĒāϰ Kenji2026 abc Password āĻĻāĻŋāϞ⧇ āφāϏ⧇ strong, weak: length, digit, capital āφāϰ weak: digitāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

// your code: read with next() and nextInt(), push every line of output to out

console.log(out.join("\n"));

āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ grade āĻšāϝāĻŧ āύāĻžāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āύāĻŋāϝāĻŧāĻŽā§‡āϰ function character-āϗ⧁āϞ⧋āϰ āĻ“āĻĒāϰ loop āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāϰ⧇, āφāϰ āϝ⧇āϟāĻž āϖ⧁āρāϜāϛ⧇ āϏ⧇āϟāĻž āĻĒāĻžāĻ“āϝāĻŧāĻžāĻŽāĻžāĻ¤ā§āϰ true return āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϝ⧇ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞ⧋ āĻŽāĻžāύāĻž āĻšāϝāĻŧāύāĻŋ, āϤāĻžāĻĻ⧇āϰ āύāĻžāĻŽ āĻāĻ•āϟāĻž array-āϤ⧇ āϜāĻŽāĻžāĻ“ āφāϰ join āĻ•āϰ⧋āĨ¤

Run in Compiler

āϏāϚāϰāĻžāϚāϰ āϝ⧇ āĻĒā§āϰāĻļā§āύāϗ⧁āϞ⧋ āφāϏ⧇

  • āϞāĻžāχāύāϗ⧁āϞ⧋ copy āĻ•āϰāϞ⧇āχ āϤ⧋ āϚāϞ⧇, āϤāĻžāĻšāϞ⧇ function āϕ⧇āύ?

    āϚāϞ⧇, āϝāϤāĻĻāĻŋāύ āύāĻŋāϝāĻŧāĻŽāϟāĻž āύāĻž āĻŦāĻĻāϞāĻžāϝāĻŧ, āφāϰ āύāĻŋāϝāĻŧāĻŽ āĻŦāĻĻāϞāĻžāĻŦ⧇āχāĨ¤ Copy āĻ•āϰāĻž formula āĻĒā§āϰāϤāĻŋāϟāĻž āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āϖ⧁āρāĻœā§‡ āĻ āĻŋāĻ• āĻ•āϰāϤ⧇ āĻšāϝāĻŧ, āφāϰ āϝ⧇āϟāĻž āĻŦāĻžāĻĻ āĻĒāĻĄāĻŧ⧇ āϏ⧇āϟāĻž āĻāĻŽāύ bug āĻšāϝāĻŧ⧇ āĻĨāĻžāϕ⧇ āϝāĻž āϏāĻĒā§āϤāĻžāĻšā§‡āϰ āĻĒāϰ āϏāĻĒā§āϤāĻžāĻš āĻ•āĻžāϰ⧋ āĻšā§‹āϖ⧇ āĻĒāĻĄāĻŧ⧇ āύāĻžāĨ¤ Function āϧāĻžāϰāĻŖāĻžāϟāĻžāϕ⧇ āĻāĻ•āϟāĻž āύāĻžāĻŽāĻ“ āĻĻ⧇āϝāĻŧ, āϤāĻžāχ memberPrice(500) āύāĻŋāĻœā§‡āχ āĻŦāϞ⧇ āĻĻ⧇āϝāĻŧ āĻ“ āϕ⧀, āφāϰ 500 - Math.floor(500 / 10) āĻĻ⧇āϖ⧇ āϤ⧋āĻŽāĻžāϕ⧇ āĻŽāĻžāĻĨāĻž āĻ–āĻžāϟāĻŋāϝāĻŧ⧇ āĻŦ⧁āĻāϤ⧇ āĻšāϝāĻŧāĨ¤

  • Parameter āφāϰ argument āĻ•āĻŋ āĻāĻ•āχ āϜāĻŋāύāĻŋāϏ?

    āĻāĻ•āχ āĻšāĻžāϤāĻŦāĻĻāϞ⧇āϰ āĻĻ⧁āχ āĻŽāĻžāĻĨāĻžāĨ¤ Parameter āĻšāϞ⧋ definition-āĻ āϞ⧇āĻ–āĻž āύāĻžāĻŽ, āφāϰ argument āĻšāϞ⧋ call-āĻ āϞ⧇āĻ–āĻž valueāĨ¤ āĻŽā§āϖ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻžāϰ āϏāĻŽāϝāĻŧ āϞ⧋āϕ⧇ āĻļāĻŦā§āĻĻ āĻĻ⧁āĻŸā§‹ āϏāĻŦāϏāĻŽāϝāĻŧāχ āϗ⧁āϞāĻŋāϝāĻŧ⧇ āĻĢ⧇āϞ⧇, āϤāĻžāϤ⧇ āϕ⧇āω āĻŦ⧇āĻļāĻŋāĻ•ā§āώāĻŖ āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤ āĻĨāĻžāϕ⧇ āύāĻžāĨ¤ āĻāχ track-āĻ definition-āĻāϰ āĻĨāĻžāϕ⧇ parameter, āφāϰ call-āĻāϰ āĻĨāĻžāϕ⧇ argumentāĨ¤

  • āĻĒā§āϰāϤāĻŋāϟāĻž function-āĻ āĻ•āĻŋ return āϞāĻžāϗ⧇?

    āύāĻžāĨ¤ āϝ⧇ function āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻž āĻ•āĻžāϜ āĻ•āϰ⧇, āϝ⧇āĻŽāύ āĻāĻ•āϟāĻž āϞāĻžāχāύ print āĻ•āϰāĻž, āĻ“āϰ return āϞāĻžāϗ⧇ āύāĻž, āφāϰ āĻ“āϰ call āĻĻ⧇āϝāĻŧ undefinedāĨ¤ āϝ⧇ function āĻāĻ•āϟāĻž āωāĻ¤ā§āϤāϰ āĻšāĻŋāϏāĻžāĻŦ āĻ•āϰ⧇, āĻ“āϰ return āϞāĻžāϗ⧇, āύāχāϞ⧇ āωāĻ¤ā§āϤāϰāϟāĻž āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āĻĒā§āϰāĻĨāĻŽ āϧāϰāύāϟāĻžāϰ āύāĻžāĻŽ āϰāĻžāĻ–ā§‹ āĻāĻ•āϟāĻž āĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĻāĻŋāϝāĻŧ⧇, āϝ⧇āĻŽāύ printLine, āϝāĻžāϤ⧇ āϕ⧇āω āĻ“āϰ call-āϕ⧇ value āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇āĨ¤

  • Module 1 āĻŦāϞ⧇āĻ›āĻŋāϞ function-āĻāϰ āύāĻžāĻŽ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ āĻāĻ•āϟāĻž āĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĻāĻŋāϝāĻŧ⧇āĨ¤ āϤāĻžāĻšāϞ⧇ lineTotal āφāϰ area āϕ⧇āύ?

    āĻ…āĻ­ā§āϝāĻžāϏāϟāĻžāϰ āĻĒ⧇āĻ›āύ⧇āϰ āύāĻŋāϝāĻŧāĻŽ āĻšāϞ⧋, āύāĻžāĻŽ āĻļ⧁āύ⧇āχ āϝ⧇āύ āĻŦā§‹āĻāĻž āϝāĻžāϝāĻŧ āϕ⧀ āĻĒāĻžāĻŦ⧇āĨ¤ āϝ⧇ function āĻ•āĻŋāϛ⧁ āĻ•āϰ⧇, āĻ“āϰ āύāĻžāĻŽ āĻšāϝāĻŧ āĻ•āĻžāϜāϟāĻž āĻĻāĻŋāϝāĻŧ⧇: printReceiptāĨ¤ āϝ⧇ āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻž āĻĒā§āϰāĻļā§āύ⧇āϰ āωāĻ¤ā§āϤāϰ āĻĻ⧇āϝāĻŧ, āĻ“āϰ āύāĻžāĻŽ āĻĒā§āϰāĻžāϝāĻŧāχ āĻšāϝāĻŧ āωāĻ¤ā§āϤāϰāϟāĻž āĻĻāĻŋāϝāĻŧ⧇, āϝ⧇āĻŽāύ JavaScript-āĻāϰ āύāĻŋāĻœā§‡āϰ Math.maxāĨ¤ getLineTotal āϞāĻŋāĻ–āϞ⧇āĻ“ āĻ āĻŋāĻ• āφāϛ⧇; āĻāĻ•āϟāĻž āϧāϰāύ āĻŦ⧇āϛ⧇ āύāĻŋāϝāĻŧ⧇ āϏ⧇āϟāĻžāχ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āĨ¤

  • āĻāĻ•āϟāĻž function āĻ•āĻŋ āφāϰ⧇āĻ•āϟāĻž function-āϕ⧇, āĻŦāĻž āύāĻŋāĻœā§‡āϕ⧇āχ call āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇?

    āĻĻ⧁āĻŸā§‹āχ āĻĒāĻžāϰ⧇āĨ¤ āĻ“āĻĒāϰ⧇ printLine call āĻ•āϰ⧇āϛ⧇ lineTotal-āϕ⧇, āφāϰ call stack āĻĻ⧁āĻŸā§‹ frame-āχ āϰ⧇āϖ⧇āϛ⧇āĨ¤ āϝ⧇ function āύāĻŋāĻœā§‡āϕ⧇ call āĻ•āϰ⧇, āϤāĻžāϕ⧇ āĻŦāϞ⧇ recursive, āφāϰ lesson 03 āĻāĻ•āϟāĻž āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇ āĻ“āϰ frame-āϗ⧁āϞ⧋ āϕ⧀āĻ­āĻžāĻŦ⧇ āϜāĻŽāϤ⧇ āĻĨāĻžāϕ⧇āĨ¤

āĻŽā§‚āϞ āĻ•āĻĨāĻž

  • Function āĻšāϞ⧋ āύāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻāĻ• āϟ⧁āĻ•āϰ⧋ code: definition āĻ“āϕ⧇ āϰ⧇āϖ⧇ āĻĻ⧇āϝāĻŧ, āφāϰ bracket-āϏāĻš call āĻ“āϕ⧇ āϚāĻžāϞāĻžāϝāĻŧāĨ¤
  • Argument āϜāĻžāϝāĻŧāĻ—āĻž āĻĻ⧇āϖ⧇ parameter-āĻ āĻŦāϏ⧇; āĻŦāĻžāĻĻ āĻĒāĻĄāĻŧāϞ⧇ undefined, āĻŦāĻžāĻĄāĻŧāϤāĻŋ āĻšāϞ⧇ āĻŦāĻžāĻĻāĨ¤
  • return āĻāĻ•āϟāĻž value āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āφāϰ call āĻļ⧇āώ āĻ•āϰ⧇; return āύāĻž āĻĨāĻžāĻ•āϞ⧇ call āĻĻ⧇āϝāĻŧ undefinedāĨ¤
  • āĻĒā§āϰāϤāĻŋāϟāĻž call āύāĻŋāĻœā§‡āϰ parameter āύāĻŋāϝāĻŧ⧇ call stack-āĻ āĻāĻ•āϟāĻž frame āĻĒāĻžāϝāĻŧ, āφāϰ return āĻšāϞ⧇ frame-āϟāĻž āϏāϰ⧇ āϝāĻžāϝāĻŧāĨ¤
  • Declaration, function expression āφāϰ arrow āĻšāϞ⧋ function āϞ⧇āĻ–āĻžāϰ āϤāĻŋāύāϟāĻž āϰ⧂āĻĒ; starter-āĻāϰ next āφāϰ nextInt āĻĻ⧁āĻŸā§‹āχ arrowāĨ¤
  • āφāϰāĻ“ āĻ—āĻ­ā§€āϰ⧇: Under the Hood, call stack, frame āφāϰ āĻāĻ•āϟāĻž call-āĻāϰ āĻ–āϰāϚ (Pro)āĨ¤

āĻāϰāĻĒāϰ lesson 02 āĻĒā§āϰāϤāĻŋāϟāĻž āϰ⧂āĻĒ āĻāĻ•āϟāĻž āĻāĻ•āϟāĻž āĻ•āϰ⧇ āϖ⧁āϞ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇: āĻĒ⧁āϰ⧋ arrow, default value, rest parameter, āφāϰ value āĻšāĻŋāϏ⧇āĻŦ⧇ āĻāĻĻāĻŋāĻ•-āĻ“āĻĻāĻŋāĻ• āĻĒāĻžāĻ āĻžāύ⧋ functionāĨ¤

lesson ā§§ āĻļ⧇āώ

āĻļ⧇āώ āĻšāϞ⧇ āϚāĻŋāĻšā§āύ āĻĻāĻŋāύ, āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āφāĻĒāύāĻžāϰ āϏāĻžāĻĨ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āĻĒāϰ⧇āϰāϟāĻž: āĻĒā§āϰāϤāĻŋāϟāĻž āϰ⧂āĻĒ, āĻāĻ•āϟāĻž āĻāĻ•āϟāĻž āĻ•āϰ⧇: declaration, arrow, default āφāϰ rest

function āĻŽāĻžāύ⧇ āύāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻāĻ•āϟāĻž āϰ⧇āϏāĻŋāĻĒāĻŋ: āĻĒ⧁āϰ⧋ āĻ›āĻŦāĻŋāϟāĻž | Learn JavaScript | Progsity