Module ā§Ģ ¡ function: declaration, arrow, default āĻāϰ rest
function āĻŽāĻžāύ⧠āύāĻžāĻŽ āĻĻā§āĻāϝāĻŧāĻž āĻāĻāĻāĻž āϰā§āϏāĻŋāĻĒāĻŋ: āĻĒā§āϰ⧠āĻāĻŦāĻŋāĻāĻž
āĻāĻ 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 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 āĻšāϞā§āĨ¤
returncall-āĻāĻž āĻļā§āώ āĻāϰā§, āĻāϰ āϝā§āĻāĻžāύ āĻĨā§āĻā§ 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 āύāĻŋāϝāĻŧā§ āĻŦāĻŋāĻĻāĻžāϝāĻŧ āύā§āϝāĻŧāĨ¤
āϝ⧠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 āĻŦāϞāĻŦā§ āĻāĻāύ āĻā§āύāĻāĻž āύā§āĻŦā§āĨ¤
āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āĻ āĻāĻžāĻā§āϰ 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āĻāĻž āĻŦāĻžāĻā§āϏ āĻā§āύā§āĨ¤
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-āĻā§āϞ⧠āĻĻā§āϝāĻŧāύāĻŋāĨ¤
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āĨ¤
āĻāĻāĻž āĻā§āĻĨāĻžāϝāĻŧ āĻāĻžāĻā§ āϞāĻžāĻā§
- 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 āĻŦāĻĻāϞāĻžāϤ⧠āĻā§āϞ⧠āĻā§āϞ⧠āĻāĻāĻž āĻšāϝāĻŧāĨ¤
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-āĻ āĻāĻā§ āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻž āĻāϰ, āϏāĻŦāĻā§āϝāĻŧā§ āĻŦāĻĄāĻŧ āĻŽāĻžāĻĒā§ āĻĒā§āϰāϤāĻŋāĻāĻž āĻāĻāĻžāϰ, āĻāϰ āĻāĻŽāύ āϤā§āϰāĻŋāĻā§āĻ āϝāĻžāϰ āĻā§āώā§āϤā§āϰāĻĢāϞ āĻĒā§āϰā§āĻŖāϏāĻāĻā§āϝāĻž āύāĻžāĨ¤
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-āĻ āϰā§āĻā§ āĻĻāĻžāĻāĨ¤
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 āĻāϰā§āĨ¤
āϏāĻāϰāĻžāĻāϰ āϝ⧠āĻĒā§āϰāĻļā§āύāĻā§āϞ⧠āĻāϏā§
āϞāĻžāĻāύāĻā§āϞ⧠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 āĻāϰāϤ⧠āĻĒāĻžāϰā§?
āĻĻā§āĻā§āĻ āĻĒāĻžāϰā§āĨ¤ āĻāĻĒāϰā§
printLinecall āĻāϰā§āĻā§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