Bibi's DevLog ๐ค๐
[์ธํ๋ฐ] Javascript์ ๋ฌธ - ํจ์2 (ํจ์์ ๋ฆฌํด๊ฐ return) ๋ณธ๋ฌธ
[์ธํ๋ฐ] Javascript์ ๋ฌธ - ํจ์2 (ํจ์์ ๋ฆฌํด๊ฐ return)
๋น๋น bibi 2020. 10. 12. 23:14* ์ด ๊ธ์ ์ธํ๋ฐ์์ ์ ๊ณตํ๋ ํธ๋ ์ค๋์ ์ ๋ฃ ๊ฐ์ '์ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ๋ฐฐ์๋ณด๋ Javascript ์ ๋ฌธ - ์ฝ๋์ค์ฟผ๋ ๋ง์คํฐ์ฆ ์ฝ์ค ๋ ๋ฒจ1'๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์ ๋ด์ฉ์ ๋ํด, ์ ๊ฐ ํ๊ธฐํ๊ณ ๊ตฌ๊ธ๋งํ ๋ด์ฉ์ด ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ณด์ธ ์ ๊ฐ ์ดํดํ ๋๋ก ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋ถ์ ํํ ๋ด์ฉ์ด ์์ ์ ์์์ ๊ฐ์ํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ ์ธํ๋ฐ ์ธก ๋ต๋ณ์ ๋ฐ์ ์ ์ด ์์ผ๋(https://bibi6666667.tistory.com/37), ์ ์๊ถ์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋ณดํธ ๋ชจ๋(๋น๊ณต๊ฐ)๋ก ์ ํํ๊ฒ ์ต๋๋ค.
ํจ์์ ๋ฆฌํด ๊ฐ
๋ฆฌํด ๊ฐ์ด ์๋ ํจ์ ์ ์ํ๊ธฐ
๋ฆฌํด ๊ฐ์ด ์์ ๊ฒฝ์ฐ, ํจ์๋ฅผ ํธ์ถํด์ ๋ณ์์ ๊ฐ์ ๋ฃ์ ์ ์์ต๋๋ค.
= ๋ณ์๋ฅผ ์ ์ธํ๊ณ , ๊ฑฐ๊ธฐ์ ๋ฆฌํด ๊ฐ์ ๋ฃ์ ์ ์๋ค.
โป ๋ฆฌํด ๊ฐ์ ํ๋๋ง ๋ฃ์ด ์ค ์ ์๋ค = ๋ฆฌํด์ ํ ๊ฐ์ ๊ฐ๋ง ๋ฆฌํดํด์ค๋ค.
(๊ณ ์ผ๋จ ์์๋๊ธฐ)
var five = function() {
return 5;
}
// ๋งค๊ฐ๋ณ์ ์์ด ํจ์ ํธ์ถํ ๋
five(); // 5
// ๋ฆฌํด์ ์ฌ์ฉํ๋ฉด ๋ณ์์ ๊ฐ์ ๋ฃ์ ์ ์๋ค.
// (๋ณ์๋ฅผ ์ ์ธํ๊ณ , ๊ฑฐ๊ธฐ์ ๋ฆฌํด๊ฐ์ ๋ฃ์ ์ ์๋ค)
var x = five();
x; // 5
console.log(x); // 5
(์๋ ๋ด์ฉ๊ณผ ๋น๊ตํ๋ฉด์ ์ดํดํ๊ธฐ)
์์ ๋ฐ๋๋ก,
๋ฆฌํด์ด ์๋ ํจ์๋ฅผ ๋ณ์์ ํ ๋นํ๋ฉด?
๋ฆฌํด์ด "์๋" ํจ์๋ฅผ ๋ณ์์ ๋ฃ์ผ๋ ค ํ๋ฉด, undefined ๊ฐ ๋ฌ๋ค. (return์ด ์๊ธฐ ๋๋ฌธ)
์ ํํ return๊ฐ์ด ์๋ ํจ์๋ง ๋ณ์์ ๊ฐ์ผ๋ก ๋ฃ์ ์ ์๋ค.
** ํจ์์ return๊ฐ ์์ด ๊ฒฐ๊ณผ๊ฐ์ ๋ณ์์ ๋ฃ์ผ๋ ค๊ณ ํ๋ ์ค์๋ฅผ ๋ง์ด ํ๋ค. ์ฃผ์ํ์!
var foo = function() {
console.log('I am foo');
}
foo(); // I am foo
var n = foo();
n; // undefined
// ํจ์ foo()๋ return๊ฐ์ด ์๊ธฐ ๋๋ฌธ์, ๋ณ์ n์ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ ๋ฃ์ ์ ์๋ ๊ฒ.
var fool = function() {
return "I am fool";
}
fool() ; // I am fool
var n = fool();
n; // I am fool
// ํจ์ fool()์ return๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ๋ณ์ n์ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ ๋ฃ์ด์ค ์ ์๋ค.
์๋ฌด ๊ฐ๋ ์๋ ๋ฆฌํด ์ฌ์ฉํ๊ธฐ : ํจ์์ ์ข ๋ฃ
return; ์ ๋ ๋ฒ์งธ ์ฉ๋
: ํจ์๋ฅผ ์ข ๋ฃํ ๋(ํจ์๋ฅผ ๋น ์ ธ๋๊ฐ ๋) ์ฌ์ฉํ ์ ์๋ค.
๋ฐ๋ณต๋ฌธ(๋ฃจํ)์ break;์ ๊ฐ์ ์ฉ๋์ด๋ค.
var test1 = function(text) {
if (text === "exit") {
return;
}
console.log("๋ณด์ด๋์?");
}
test1("hoho"); // ๋ณด์ด๋์?
// ์กฐ๊ฑด๋ฌธ์ ๋ง์กฑํ์ง ์์ ํจ์ test1 ์ ๋ค ๋์๊ธฐ ๋๋ฌธ์ "๋ณด์ด๋์?"๊ฐ ์ฐํ ๊ฒ.
test1("exit"); // undefined
// ์กฐ๊ฑด๋ฌธ์ ๋ง์กฑํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด๋ฌธ์ผ ๋ ์คํ๋๋ return;์ ๋ง๋ ํจ์๊ฐ ๋๋จ.
// ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ "๋ณด์ด๋์?" ๋ ์ฐํ์ง ์๋๋ค.
ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด
- ๊ฐ๋ ์ฑ์ด ์ข์์ง
- ์ ์ง๋ณด์๋ฅผ ์ ํ๊ฒ ๋จ
-> ์์ด๋ณด ๋ ๋ฒจ1 : ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ์ ์ ์ฌ์ฉํ๋ค.
-> ์์ด๋ณด ๋ ๋ฒจ2 : ํจ์๋ฅผ ์ ์ฌ์ฉํ๋ค.
-> ์์ด๋ณด ๋ ๋ฒจ3 : ๊ฐ์ฒด๋ฅผ ์ ์ฌ์ฉํ๋ค. (ํด๋์ค, ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ)
ํจ์๋ฅผ ์ ์ฌ์ฉํด ์์ด๋ณด ๋ ๋ฒจ2 ํ์ถํ์!
ํจ์ ์ด๋ป๊ฒ (์) ๋ง๋ค๊น?
- ํจ์๋ฅผ ์ธ ๋๋ '๋งค๊ฐ ๋ณ์'์ '๋ฆฌํด'์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์.
- ์ฝ๋๋ฅผ ์งค ๋,
์ค ์๊ฐ ์ง๋์น๊ฒ ๊ธธ์ด์ง๋ฉด ํจ์๋ก ๋นผ์. (์ฝ๋ 10์ค ์ ๋) - ์ธ๋ดํธindent(๋ค์ฌ์ฐ๊ธฐ)๊ฐ ์ง๋์น๊ฒ ๊น์ด์ ธ๋ ํจ์๋ก ๋นผ์. (๋ค์ฌ์ฐ๊ธฐ 3๋จ ์ ๋)
- ํจ์๋ ๋ฐ๋์ ํ ๊ฐ์ง ์ผ๋ง ํ๋๋ก ํ์.
ํ ํจ์์์ ๋ ๊ฐ์ง ์ผ์ ํ๋ค(X)
(Option) 2์ค ๋ฃจํ๋ฅผ ํ ๋ฒ์ ๋น ์ ธ ๋๊ฐ๊ธฐ
- `break` ๋ช
๋ น์ ํ ๋ฒ์ ํ ๋ฃจํ๋ง ๋น ์ ธ๋๊ฐ๋๋ค.
- ํจ์์ `return` ์ ์ด์ฉํ๋ฉด 2์ค ๋ฃจํ๋ฅผ ํ ๋ฒ์ ์ข
๋ฃํ ์ ์์ต๋๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>test</h1>
<script>
for (var i = 0; i < 100 ; i++) {
for (var j = 0; j < 100 ; j++) {
console.log(i, j);
if (i === 5 && j === 3) {
break;
}
}
}
</script>
</body>
</html>
์์ ๊ฐ์ ์ด์ค๋ฃจํ์์,
i=5, j=3์ด ๋์ด break์ ๊ฑธ๋ฆฐ๋ค๊ณ ํด๋ ์ด์ค๋ฃจํ๋ฅผ ํ ๋ฒ์ ์ข
๋ฃ์ํฌ ์ ์๋ค.
break๋ฅผ ์ฌ์ฉํ๋ฉด ์์ชฝ ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋๊ฐ ๋ฟ, ๋ฐ๊นฅ์ชฝ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋์๊ฐ ๋๋จธ์ง ๋ฐ๋ณต์ ๊ณ์ํ๋ค.
-> ์ด์ค๋ฃจํ๋ฅผ ํ ๋ฒ์ ๋น ์ ธ๋๊ฐ๊ธฐ ์ํด์๋
์ด์ค๋ฃจํ๋ฅผ ํจ์๋ก ๋ง๋ค๊ณ , break; ๋์ return;์ ์ฌ์ฉํ๋ค. ๋ง์ง๋ง์ ๊ทธ ํจ์๋ฅผ ํธ์ถํ๋ค.
๊ทธ๋ฌ๋ฉด return์ ํตํด ํจ์๊ฐ ํ ๋ฒ์ ์ข
๋ฃ๋๊ธฐ ๋๋ฌธ์, ์ด์ค๋ฃจํ๋ฅผ ํ ๋ฒ์ ๋น ์ ธ๋๊ฐ ์ ์๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>test</h1>
<script>
function hamsu() {
for (var i = 0; i < 100; i++) {
for (var j = 0; j < 100; j++) {
console.log(i, j);
if (i === 5 && j === 3) {
return;
}
}
}
}
hamsu();
</script>
</body>
</html>