๐ข 22/07/27 ๋ณต์ต
javascript.info, https://ko.javascript.info/function-basics
์ฐธ๊ณ ์ฌ์ดํธ์ ๋ด์ฉ์ ๊ฐ์ธ์ ์ผ๋ก ๋ณต์ตํ๊ธฐ ํธํ๋๋ก ์ฌ๊ตฌ์ฑํ ๊ธ์ ๋๋ค.
์์ธํ ์ค๋ช ์ ์ฐธ๊ณ ์ฌ์ดํธ๋ฅผ ์ดํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ค ๋ณด๋ฉด ์ ์ฌํ ๋์์ ํ๋ ์ฝ๋๊ฐ ์ฌ๋ฌ ๊ณณ์์ ํ์ํ ๋๊ฐ ๋ง์ต๋๋ค.
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ด๋ ๋ก๊ทธ์์์ ํ์ ๋ ์๋ด ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋์ ๊ฐ์ ๊ฒฝ์ฐ ๋ง์ด์ฃ .
ํจ์๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ์ฃผ์ "๊ตฌ์ฑ ์์(building block)"์ ๋๋ค. ํจ์๋ฅผ ์ด์ฉํ๋ฉด ์ค๋ณต ์์ด ์ ์ฌํ ๋์์ ํ๋ ์ฝ๋๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ ์ ์์ต๋๋ค.
ํจ์ ์ ์ธ(function declaration) ๋ฐฉ์์ ์ด์ฉํ๋ฉด ํจ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
ํจ์ ์ ์ธ ๋ฐฉ์์ ์๋์ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
function showMessage() {
alert( "์๋
ํ์ธ์!" );
}
function
ํค์๋, ํจ์ ์ด๋ฆ, ๊ดํธ๋ก ๋๋ฌ์ผ ๋งค๊ฐ๋ณ์๋ฅผ ์ฐจ๋ก๋ก ์จ์ฃผ๋ฉด ํจ์๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค. ์ ํจ์์๋ ๋งค๊ฐ๋ณ์๊ฐ ์๋๋ฐ, ๋ง์ฝ ๋งค๊ฐ๋ณ์๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ฝค๋ง๋ก ๊ตฌ๋ถํด์ค๋๋ค. ์ด์ด์ ํจ์๋ฅผ ๊ตฌ์ฑํ๋ ์ฝ๋์ ๋ชจ์์ธ "ํจ์ ๋ณธ๋ฌธ(body)"์ ์ค๊ดํธ๋ก ๊ฐ์ธ ๋ถ์ฌ์ค์๋ค.
function name(parameters) {
...ํจ์ ๋ณธ๋ฌธ...
}
์๋กญ๊ฒ ์ ์ํ ํจ์๋ ํจ์ ์ด๋ฆ ์์ ๊ดํธ๋ฅผ ๋ถ์ฌ ํธ์ถํ ์ ์์ต๋๋ค. showMessage()
๊ฐ์ด ๋ง์ด์ฃ .
function showMessage() {
alert( "์๋
ํ์ธ์!" );
}
showMessage();
showMessage();
showMessage()
๋ก ํจ์๋ฅผ ํธ์ถํ๋ฉด ํจ์ ๋ณธ๋ฌธ์ด ์คํ๋ฉ๋๋ค. ์ ์์์์ showMessage
๋ฅผ ๋ ๋ฒ ํธ์ถํ์ผ๋ฏ๋ก ์ผ๋ฟ ์ฐฝ์ด ๋ ๋ฒ ๋น๋๋ค.
ํจ์์ ์ฃผ์ ์ฉ๋ ์ค ํ๋๋ ์ค๋ณต ์ฝ๋ ํผํ๊ธฐ์ ๋๋ค. ์ ์์๋ฅผ ํตํด ์ด๋ฅผ ํ์ธํด ๋ณด์์ต๋๋ค.
์ผ๋ฟ ์ฐฝ์ ๋ณด์ฌ์ค ๋ฉ์์ง๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์ ์์ฒด๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด, ํจ์ ๋ณธ๋ฌธ ์ค ์ถ๋ ฅ์ ๊ด์ฌํ๋ ์ฝ๋ ๋ฑ ํ๋๋ง ์์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
ํจ์ ๋ด์์ ์ ์ธํ ๋ณ์์ธ ์ง์ญ ๋ณ์(local variable)๋ ํจ์ ์์์๋ง ์ ๊ทผํ ์ ์์ต๋๋ค.
function showMessage() {
let message = "์๋
ํ์ธ์!"; // ์ง์ญ ๋ณ์
alert( message );
}
showMessage(); // ์๋
ํ์ธ์!
alert( message ); // ReferenceError: message is not defined (message๋ ํจ์ ๋ด ์ง์ญ ๋ณ์์ด๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.)
ํจ์ ๋ด๋ถ์์ ํจ์ ์ธ๋ถ์ ๋ณ์์ธ ์ธ๋ถ ๋ณ์(outer variable)์ ์ ๊ทผํ ์ ์์ต๋๋ค.
let userName = "John";
function showMessage() {
let message = "Hello, " + userName;
alert(message);
}
showMessage(); // Hello, John
ํจ์์์ ์ธ๋ถ ๋ณ์์ ์ ๊ทผํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ, ์์ ๋ ํ ์ ์์ต๋๋ค.
let userName = "John";
function showMessage() {
userName = "Bob"; // (1) ์ธ๋ถ ๋ณ์๋ฅผ ์์ ํจ
let message = "Hello, " + userName;
alert(message);
}
alert( userName ); // ํจ์ ํธ์ถ ์ ์ด๋ฏ๋ก John ์ด ์ถ๋ ฅ๋จ
showMessage();
alert( userName ); // ํจ์์ ์ํด Bob ์ผ๋ก ๊ฐ์ด ๋ฐ๋
์ธ๋ถ ๋ณ์๋ ์ง์ญ ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํจ์ ๋ด๋ถ์ ์ธ๋ถ ๋ณ์์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ๋ณ์๊ฐ ์ ์ธ๋์๋ค๋ฉด, ๋ด๋ถ ๋ณ์๋ ์ธ๋ถ ๋ณ์๋ฅผ ๊ฐ๋ฆฝ๋๋ค.
let userName = "John";
function showMessage() {
let userName = "Bob"; // ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ง์ญ ๋ณ์๋ฅผ ์ ์ธํฉ๋๋ค.
let message = "Hello, " + userName; // Bob
alert(message);
}
// ํจ์๋ ๋ด๋ถ ๋ณ์์ธ userName๋ง ์ฌ์ฉํฉ๋๋ค,
showMessage();
alert( userName ); // ํจ์๋ ์ธ๋ถ ๋ณ์์ ์ ๊ทผํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๊ณ , John์ด ์ถ๋ ฅ๋ฉ๋๋ค.
๐ฅ ์ ์ญ ๋ณ์
์ ์์์ userName
์ฒ๋ผ, ํจ์ ์ธ๋ถ์ ์ ์ธ๋ ๋ณ์๋ ์ ์ญ ๋ณ์(global variable) ๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
์ ์ญ ๋ณ์๋ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ง์ญ ๋ณ์์ ์ํด ๊ฐ๋ ค์ง์ง๋ง ์๋๋ค๋ฉด ๋ชจ๋ ํจ์์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
๋ณ์๋ ์ฐ๊ด๋๋ ํจ์ ๋ด์ ์ ์ธํ๊ณ , ์ ์ญ ๋ณ์๋ ๋๋๋ก ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋น๊ต์ ๊ทผ๋์ ์์ฑ๋ ์ฝ๋๋ค์ ๋๋ถ๋ถ ์ ์ญ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๊ฑฐ๋ ์ต์ํ์ผ๋ก๋ง ์ฌ์ฉํฉ๋๋ค. ๋ค๋ง ํ๋ก์ ํธ ์ ๋ฐ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ ์ ์ญ ๋ณ์์ ์ ์ฅํ๋ ๊ฒ์ด ์ ์ฉํ ๊ฒฝ์ฐ๋ ์์ผ๋ ์ด ์ ์ ์์๋์๊ธฐ ๋ฐ๋๋๋ค.
๋งค๊ฐ๋ณ์(parameter)๋ฅผ ์ด์ฉํ๋ฉด ์์์ ๋ฐ์ดํฐ๋ฅผ ํจ์ ์์ ์ ๋ฌํ ์ ์์ต๋๋ค.
์๋ ์์์์ ํจ์ showMessage
๋ ๋งค๊ฐ๋ณ์ from
๊ณผ text
๋ฅผ ๊ฐ์ง๋๋ค.
function showMessage(from, text) { // ๋งค๊ฐ๋ณ์: from, text
alert(from + ": " + text);
}
showMessage("Ann", "Hello!"); // Ann: Hello! (*)
showMessage("Ann", "What's up?"); // Ann: What's up? (**)
(*)
, (**)
๋ก ํ์ํ ์ค์์ ํจ์๋ฅผ ํธ์ถํ๋ฉด, ํจ์์ ์ ๋ฌ๋ ์ธ์(argument)๋ ๋งค๊ฐ๋ณ์ from
๊ณผ text
์ ๋ณต์ฌ๋ฉ๋๋ค. ๐ฅ ๊ทธ ํ ํจ์๋ ๋งค๊ฐ๋ณ์์ ๋ณต์ฌ๋ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
์์ ํ๋๋ฅผ ๋ ์ดํด๋ด
์๋ค. ์ ์ญ ๋ณ์ from
์ด ์๊ณ , ์ด ๋ณ์๋ฅผ ํจ์์ ์ ๋ฌํ์์ต๋๋ค. ํจ์๊ฐ from
์ ๋ณ๊ฒฝํ์ง๋ง, ๋ณ๊ฒฝ ์ฌํญ์ ์ธ๋ถ ๋ณ์ from
์ ๋ฐ์๋์ง ์์์ต๋๋ค. ํจ์๋ ์ธ์ ๋ ๋ณต์ฌ๋ ๊ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
๋๋ค.
function showMessage(from, text) {
from = "*" + from + "*"; // "from"์ ์ข ๋ ๋ฉ์ง๊ฒ ๊พธ๋ฉฐ์ค๋๋ค.
alert( from + ": " + text );
}
let from = "Ann";
showMessage(from, "Hello"); // *Ann*: Hello
// ํจ์๋ ๋ณต์ฌ๋ ๊ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ๊นฅ์ "from"์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
alert( from ); // Ann
๋งค๊ฐ๋ณ์์ ๊ฐ์ ์ ๋ฌํ์ง ์์ผ๋ฉด ๊ทธ ๊ฐ์ undefined
๊ฐ ๋ฉ๋๋ค.
์์๋ฅผ ํตํด ์ด์ ๋ํด ์์๋ด
์๋ค. ์์์ ์ ์ํ ํจ์ showMessage(from, text)
๋ ๋งค๊ฐ๋ณ์๊ฐ 2๊ฐ์ง๋ง, ์๋์ ๊ฐ์ด ์ธ์๋ฅผ ํ๋๋ง ๋ฃ์ด์ ํธ์ถํ ์ ์์ต๋๋ค.
showMessage("Ann");
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ์ ๋ฌํ์ง ์์๊ธฐ ๋๋ฌธ์ text
์ undefiend
๊ฐ ํ ๋น๋ ๋ฟ์
๋๋ค. ๋ฐ๋ผ์ ์๋ฌ ์์ด "Ann: undefined"
๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
๋งค๊ฐ๋ณ์์ ๊ฐ์ ์ ๋ฌํ์ง ์์๋ ๊ทธ ๊ฐ์ด undefined
๊ฐ ๋์ง ์๊ฒ ํ๋ ค๋ฉด "๊ธฐ๋ณธ๊ฐ(default value)"์ ์ค์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค. ๋งค๊ฐ๋ณ์ ์ค๋ฅธ์ชฝ์ =
์ ๋ถ์ด๊ณ undefined
๋์ ์ค์ ํ๊ณ ์ ํ๋ ๊ธฐ๋ณธ๊ฐ์ ์จ์ฃผ๋ฉด ๋์ฃ .
function showMessage(from, text = "no text given") {
alert( from + ": " + text );
}
showMessage("Ann"); // Ann: no text given
์ด์ text
๊ฐ ๊ฐ์ ์ ๋ฌ๋ฐ์ง ๋ชปํด๋ undefined
๋์ ๊ธฐ๋ณธ๊ฐ "no text given"
์ด ํ ๋น๋ฉ๋๋ค.
์ ์์์์ ๋ฌธ์์ด "no text given"
์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ์ต๋๋ค. ํ์ง๋ง ์๋์ ๊ฐ์ด ๋ณต์กํ ํํ์๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ ์๋ ์์ต๋๋ค.
function showMessage(from, text = anotherFunction()) {
// anotherFunction()์ text๊ฐ์ด ์์ ๋๋ง ํธ์ถ๋จ
// anotherFunction()์ ๋ฐํ ๊ฐ์ด text์ ๊ฐ์ด ๋จ
}
๐ฅ ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ ํ๊ฐ ์์
์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์๋ฅผ ํธ์ถํ ๋๋ง๋ค ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ์ ํ๊ฐํฉ๋๋ค. ๋ฌผ๋ก ํด๋นํ๋ ๋งค๊ฐ๋ณ์๊ฐ ์์ ๋๋ง ๊ธฐ๋ณธ๊ฐ์ ํ๊ฐํ์ฃ .
์ ์์์์ ๋งค๊ฐ๋ณ์ text
์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ showMessage()
๋ฅผ ํธ์ถํ ๋๋ง๋ค anotherFunction()
์ด ํธ์ถ๋ฉ๋๋ค.
๐ฅ ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์ ์๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ
๊ฐ๋์ ํจ์ ์ ์ธ๋ถ์์ ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๋ ๊ฒ ๋์ ํจ์๊ฐ ์คํ๋๋ ๋์ค์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๋ ๊ฒ ๋ ผ๋ฆฌ์ ๋ง๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ธฐ๋ ํฉ๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์ ์ผ๋จ ๋งค๊ฐ๋ณ์๋ฅผ undefined
์ ๋น๊ตํ์ฌ ํจ์ ํธ์ถ ์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ต๋์๋์ง๋ฅผ ํ์ธํฉ๋๋ค.
function showMessage(text) {
if (text === undefined) {
text = "๋น ๋ฌธ์์ด";
}
alert(text);
}
showMessage(); // ๋น ๋ฌธ์์ด
์ด๋ ๊ฒ if
๋ฌธ์ ์ฐ๋ ๊ฒ ๋์ ๋
ผ๋ฆฌ ์ฐ์ฐ์ ||
๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
// ๋งค๊ฐ๋ณ์๊ฐ ์๋ต๋์๊ฑฐ๋ ๋น ๋ฌธ์์ด("")์ด ๋์ด์ค๋ฉด ๋ณ์์ "๋น ๋ฌธ์์ด"์ด ํ ๋น๋ฉ๋๋ค.
function showMessage(text) {
text = text || "๋น ๋ฌธ์์ด";
...
}
์ด ์ธ์๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ง์ํ๋ nullish ๋ณํฉ ์ฐ์ฐ์(nullish coalescing operator) ??
๋ฅผ ์ฌ์ฉํ๋ฉด 0
์ฒ๋ผ falsy๋ก ํ๊ฐ๋๋ ๊ฐ๋ค์ ์ผ๋ฐ ๊ฐ์ฒ๋ผ ์ฒ๋ฆฌํ ์ ์์ด์ ์ข์ต๋๋ค.
// ๋งค๊ฐ๋ณ์ "count"๊ฐ ๋์ด์ค์ง ์์ผ๋ฉด "unknown"์ ์ถ๋ ฅํด์ฃผ๋ ํจ์
function showCount(count) {
alert(count ?? "unknown");
}
showCount(0); // 0
showCount(null); // unknown
showCount(); // unknown
ํจ์๋ฅผ ํธ์ถํ์ ๋ ํจ์๋ฅผ ํธ์ถํ ๊ทธ๊ณณ์ ํน์ ๊ฐ์ ๋ฐํํ๊ฒ ํ ์ ์์ต๋๋ค. ์ด๋ ์ด ํน์ ๊ฐ์ ๋ฐํ ๊ฐ(return value)์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ๋ ๊ฐ์ ๋ํด์ฃผ๋ ๊ฐ๋จํ ํจ์๋ฅผ ๋ง๋ค์ด ๋ฐํ ๊ฐ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
function sum(a, b) {
return a + b;
}
let result = sum(1, 2);
alert( result ); // 3
์ง์์ return
์ ํจ์ ๋ด ์ด๋์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์คํ ํ๋ฆ์ด ์ง์์ return
์ ๋ง๋๋ฉด ํจ์ ์คํ์ ์ฆ์ ์ค๋จ๋๊ณ ํจ์๋ฅผ ํธ์ถํ ๊ณณ์ ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ ์์์์ ๋ฐํ ๊ฐ์ result
์ ํ ๋นํ์์ต๋๋ค.
์๋์ ๊ฐ์ด ํจ์ ํ๋์ ์ฌ๋ฌ ๊ฐ์ return
๋ฌธ์ด ์ฌ ์๋ ์์ต๋๋ค.
function checkAge(age) {
if (age >= 18) {
return true;
} else {
return confirm("๋ณดํธ์์ ๋์๋ฅผ ๋ฐ์ผ์
จ๋์?");
}
}
let age = prompt("๋์ด๋ฅผ ์๋ ค์ฃผ์ธ์", 18);
if ( checkAge(age) ) {
alert( "์ ์ ํ์ฉ" );
} else {
alert( "์ ์ ์ฐจ๋จ" );
}
์๋์ ๊ฐ์ด ์ง์์ return
๋ง ๋ช
์ํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ๋ ํจ์๊ฐ ์ฆ์ ์ข
๋ฃ๋ฉ๋๋ค.
function showMovie(age) {
if ( !checkAge(age) ) {
return;
}
alert( "์ํ ์์" ); // (*)
// ...
}
์ ์์์์, checkAge(age)
๊ฐ false
๋ฅผ ๋ฐํํ๋ฉด, (*)
๋ก ํ์ํ ์ค์ ์คํ์ด ์ ๋๊ธฐ ๋๋ฌธ์ ํจ์ showMovie
๋ ์ผ๋ฟ ์ฐฝ์ ๋ณด์ฌ์ฃผ์ง ์์ต๋๋ค.
return
๋ฌธ์ด ์๊ฑฐ๋ return
์ง์์๋ง ์๋ ํจ์๋ undefined
๋ฅผ ๋ฐํํฉ๋๋ค.
return
๋ฌธ์ด ์๋ ํจ์๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐํํฉ๋๋ค. undefined
๋ฅผ ๋ฐํํ์ฃ .
function doNothing() { /* empty */ }
alert( doNothing() === undefined ); // true
return
์ง์์๋ง ์๋ ๊ฒฝ์ฐ๋ undefined
๋ฅผ ๋ฐํํฉ๋๋ค. return
์ return undefined
์ ๋์ผํ๊ฒ ๋์ํ์ฃ .
function doNothing() {
return;
}
alert( doNothing() === undefined ); // true
๐ฅ return
๊ณผ ๊ฐ ์ฌ์ด์ ์ ๋ ์ค์ ์ฝ์
ํ์ง ๋ง์ธ์.
๋ฐํํ๋ ค๋ ๊ฐ์ด ๊ธด ํํ์์ธ ๊ฒฝ์ฐ, ์๋์ ๊ฐ์ด ์ง์์ return
๊ณผ ๋ฐํํ๋ ค๋ ๊ฐ ์ฌ์ด์ ์ ์ค์ ๋ฃ์ด ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค.
return
(some + long + expression + or + whatever * f(a) + f(b))
์๋ฐ์คํฌ๋ฆฝํธ๋ return
๋ฌธ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ ์๋์ผ๋ก ๋ฃ๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ return
๋ฌธ์ ์์ฑํ๋ฉด ์ ๋ฉ๋๋ค. ์ ์ฝ๋๋ ์๋ ์ฝ๋์ฒ๋ผ ๋์ํฉ๋๋ค.
return;
(some + long + expression + or + whatever * f(a) + f(b))
๋ฐ๋ผ์ ๋ฐํํ๊ณ ์ ํ๋ ํํ์์ ๋ฐํํ์ง ๋ชปํ๊ณ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์๋ ๊ฒ์ฒ๋ผ ๋์ด๋ฒ๋ฆฝ๋๋ค.
ํํ์์ ์ฌ๋ฌ ์ค์ ๊ฑธ์ณ ์์ฑํ๊ณ ์ถ๋ค๋ฉด ํํ์์ด return
์ง์์๊ฐ ์๋ ์ค์์ ์์ํ๋๋ก ์์ฑํด์ผ ํฉ๋๋ค. ๋๋ ์๋์ ๊ฐ์ด ์ฌ๋ ๊ดํธ๋ฅผ return
์ง์์์ ๊ฐ์ ์ค์ ์จ์ค๋ ๊ด์ฐฎ์ต๋๋ค.
return (
some + long + expression
+ or +
whatever * f(a) + f(b)
)
์ด๋ ๊ฒ ํ๋ฉด ์๋ํ ๋๋ก ํํ์์ ๋ฐํํ ์ ์์ต๋๋ค.
ํจ์๋ ์ด๋ค ๋์์ ์ํํ๊ธฐ ์ํ ์ฝ๋๋ฅผ ๋ชจ์๋์ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ํจ์์ ์ด๋ฆ์ ๋๊ฐ ๋์ฌ์ ๋๋ค. ํจ์ ์ด๋ฆ์ ๊ฐ๋ฅํ ํ ๊ฐ๊ฒฐํ๊ณ ๋ช ํํด์ผ ํฉ๋๋ค. ํจ์๊ฐ ์ด๋ค ๋์์ ํ๋์ง ์ค๋ช ํ ์ ์์ด์ผ ํ์ฃ . ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ ํจ์ ์ด๋ฆ๋ง ๋ณด๊ณ ๋ ํจ์๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง ํํธ๋ฅผ ์ป์ ์ ์์ด์ผ ํฉ๋๋ค.
ํจ์๊ฐ ์ด๋ค ๋์์ ํ๋์ง ์ถ์ฝํด์ ์ค๋ช ํด์ฃผ๋ ๋์ฌ๋ฅผ ์ ๋์ด๋ก ๋ถ์ฌ ํจ์ ์ด๋ฆ์ ๋ง๋๋ ๊ฒ ๊ด์ต์ ๋๋ค. ๋ค๋ง, ํ ๋ด์์ ๊ทธ ๋ป์ด ๋ฐ๋์ ํฉ์๋ ์ ๋์ด๋ง ์ฌ์ฉํด์ผ ํฉ๋๋ค.
showMessage(..) // ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค
getAge(..) // ๋์ด๋ฅผ ๋ํ๋ด๋ ๊ฐ์ ์ป๊ณ ๊ทธ ๊ฐ์ ๋ฐํํจ
calcSum(..) // ํฉ๊ณ๋ฅผ ๊ณ์ฐํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํจ
createForm(..) // form์ ์์ฑํ๊ณ ๋ง๋ค์ด์ง form์ ๋ฐํํจ
checkPermission(..) // ์น์ธ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ true๋ false๋ฅผ ๋ฐํํจ
์ ๋์ด๋ฅผ ์ ์ ํ ํ์ฉํ๋ฉด ํจ์ ์ด๋ฆ๋ง ๋ณด๊ณ ๋ ํจ์๊ฐ ์ด๋ค ๋์์ ํ๊ณ ์ด๋ค ๊ฐ์ ๋ฐํํ๋์ง ์ฝ๊ฒ ์ ์ ์์ต๋๋ค.
๐ฅ ํจ์๋ ๋์ ํ๋๋ง ๋ด๋นํด์ผ ํฉ๋๋ค.
ํจ์๋ ํจ์ ์ด๋ฆ์ ์ธ๊ธ๋์ด์๋ ๋์์ ์ ํํ ์ํํด์ผ ํฉ๋๋ค. ๊ทธ ์ด์ธ์ ๋์์ ์ํํด์ ์ ๋ฉ๋๋ค.
๋ ๋ฆฝ์ ์ธ ๋ ๊ฐ์ ๋์์ ๋ ๋ฆฝ๋ ํจ์ ๋ ๊ฐ์์ ๋๋ ์ ์ํํ ์ ์๊ฒ ํด์ผ ํฉ๋๋ค. ํ ์ฅ์์์ ๋ ๋์์ ๋์์ ํ์๋ก ํ๋ ๊ฒฝ์ฐ๋ผ๋ ๋ง์ด์ฃ (์ด ๊ฒฝ์ฐ๋ ์ 3์ ํจ์๋ฅผ ๋ง๋ค์ด ๊ทธ๊ณณ์์ ๋ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค).
ํจ์๋ ๊ฐ๊ฒฐํ๊ณ , ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ์ํํ ์ ์๊ฒ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ํจ์๊ฐ ๊ธธ์ด์ง๋ฉด ํจ์๋ฅผ ์๊ฒ ์ชผ๊ฐค ๋๊ฐ ๋์๋ค๋ ์ ํธ๋ก ๋ฐ์๋ค์ด์ ์ผ ํฉ๋๋ค. ํจ์๋ฅผ ์ชผ๊ฐ๋ ๊ฑด ์ฌ์ด ์์ ์ ์๋๋๋ค. ํ์ง๋ง ํจ์๋ฅผ ๋ถ๋ฆฌํด ์์ฑํ๋ฉด ๋ง์ ์ฅ์ ์ด ์๊ธฐ ๋๋ฌธ์ ํจ์๊ฐ ๊ธธ์ด์ง ๊ฒฝ์ฐ์ ํจ์๋ฅผ ๋ถ๋ฆฌํด ์์ฑํ ๊ฒ์ ๊ถ์ ํฉ๋๋ค.
ํจ์๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค๋ฉด ํ ์คํธ์ ๋๋ฒ๊น ์ด ์ฌ์์ง๋๋ค. ๊ทธ๋ฆฌ๊ณ ํจ์ ๊ทธ ์์ฒด๋ก ์ฃผ์์ ์ญํ ๊น์ง ํฉ๋๋ค!