[JavaSciprt] ํจ์
ํจ์(Function)
1. ํจ์ ์ ์ธ๋ฌธ (Function Declaration)
function
ํค์๋, ํจ์์ด๋ฆ, ๊ดํธ๋ก ๋๋ฌ์ผ ๋งค๊ฐ๋ณ์๋ฅผ ์ฐจ๋ก๋ก ์จ์ฃผ๋ฉด ํจ์๋ฅผ ์ ์ธํ ์ ์๋ค. ์๋ ํจ์์๋ ๋งค๊ฐ ๋ณ์๊ฐ ์๋๋ฐ, ๋ง์ฝ ์ฌ๋ฌ๊ฐ ์๋ค๋ฉด ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ฝค๋ง๋ก ๊ตฌ๋ถํด์ค๋ค.
function showMessage() {
alert('hi!');
}
2. ์ง์ญ ๋ณ์(local variable)
ํจ์ ๋ด์์ ์ ์ธํ ๋ณ์์ธ ์ง์ญ ๋ณ์๋ ํจ์ ์์์๋ง ์ ๊ทผ ํ ์ ์๋ค.
ex)
function showMessage(){
let message = 'hi!'; // local variable
alret(message);
}
showMessage(); // hi!
alert(message) // ReferenceError : message is not defined.
3. ์ ์ญ ๋ณ์
- ํจ์ ๋ด๋ถ์์ ํจ์ ์ธ๋ถ์ ๋ณ์์ธ ์ ์ญ ๋ณ์์ ์ ๊ทผํ ์ ์๋ค.
let userName= 'John';
function showMessage() {
let message = 'Hello, ' + userName;
alert(message);
}
showMessage(); // Hello, John
- ํจ์์์ ์ ์ญ ๋ณ์์ ์ ๊ทผํ๋๊ฒ๋ฟ ์๋๋ผ, ์์ ๋ ํ ์ ์๋ค.
let userName= 'John';
function showMessage() {
userName = 'Bob' // ์ ์ญ ๋ณ์๋ฅผ ์์
let message = 'Hello, ' + userName;
alert(message);
}
alert(userName); // ํจ์ ํธ์ถ ์ ์ด๋ฏ๋ก John์ด ์ถ๋ ฅ๋จ
showMessage(); // Hello, John
alert(userName); // ํจ์์ ์ํด Bob์ผ๋ก ๊ฐ์ด ๋ฐ๋
- ์ ์ญ ๋ณ์๋ ์ง์ญ ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ ํ ์ ์๋ค.
ํจ์ ๋ด๋ถ์ ์ ์ญ ๋ณ์์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ๋ณ์๊ฐ ์ ์ธ๋์ด์๋ค๋ฉด, ๋ด๋ถ ๋ณ์๋ ์ ์ญ ๋ณ์๋ฅผ ๊ฐ๋ฆฐ๋ค.
let userName = 'John';
function showMessage() {
let userName = "Bob"; // ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ง์ญ ๋ณ์๋ฅผ ์ ์ธํฉ๋๋ค.
let message = 'Hello, ' + userName; // Bob
alert(message);
}
// ํจ์๋ ๋ด๋ถ ๋ณ์์ธ userName๋ง ์ฌ์ฉํฉ๋๋ค,
showMessage();
alert( userName ); // ํจ์๋ ์ธ๋ถ ๋ณ์์ ์ ๊ทผํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๊ณ , John์ด ์ถ๋ ฅ ๋๋ค.
์ ์ญ๋ณ์๋ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ง์ญ ๋ณ์์ ์ํด ๊ฐ๋ ค์ง์ง๋ง ์๋๋ค๋ฉด ๋ชจ๋ ํจ์์ ์ ๊ทผ ํ ์ ์๋ค. ํ์ง๋ง ๋ณ์๋ ์ฐ๊ด๋๋ ํจ์ ๋ด์ ์ ์ธํ๊ณ , ์ ์ญ ๋ณ์๋ ๋๋๋ก ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค. ๋ค๋ง ํ๋ก์ ํธ ์ ๋ฐ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ ์ ์ญ ๋ณ์์ ์ ์ฅํ๋๊ฒ์ด ์ ์ฉํ ๊ฒฝ์ฐ๋ ์๋ค.
4. ๋งค๊ฐ๋ณ์(parameter)
๋งค๊ฐ๋ณ์๋ฅผ ์ด์ฉํ๋ฉด ์์์ ๋ฐ์ดํฐ๋ฅผ ํจ์ ์์ ์ ๋ฌ ๊ฐ๋ฅํ๋ค.
function showMessage(from, text) {
alert(from +': ' + text);
}
showMessage('Jin', 'Hi!'); // Jin: Hi!
showMessage('Jin', "What's up?"); // Jin: What's up?
๊ธฐ๋ณธ๊ฐ
๊ธฐ๋ณธ๊ฐ ์ค์ ๋ฐฉ๋ฒ 1
๋งค๊ฐ๋ณ์์ ๊ฐ์ ์ ๋ฌํ์ง ์์ผ๋ฉด ๊ทธ ๊ฐ์ undefined
๊ฐ ๋๋ค.
์๋ฅผ ๋ค์ด ์์ ์ฝ๋์์ showMessage('Ahn');
์ ์
๋ ฅํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๊ณ Ahn: undefined
๊ฐ ์ถ๋ ฅ ๋๋ค. ์ด ๋, undefined
๊ฐ์ด ๋์ง ์๊ฒ ํ๋ ค๋ฉด ๊ธฐ๊ฐ์ ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
function showMessage(from, text='no text given'){
alert(from+": "+text);
}
showMessage('Ahn'); // Ahn: no text given
๊ธฐ๋ณธ๊ฐ ์ค์ ๋ฐฉ๋ฒ2
๊ฐ๋ ํจ์ ์ ์ธ๋ถ์์ ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๋๊ฒ ๋์ ํจ์๊ฐ ์คํ๋๋ ๋์ค์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๋๊ฒ ๋ ผ๋ฆฌ์ ๋ง๋๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ธฐ๋ ํ๋ค.
- ๋งค๊ฐ๋ณ์๋ฅผ
undefined
์ ๋น๊ตํด ํจ์ ํธ์ถ ์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ต๋์๋์ง๋ฅผ ํ์ธํ๋ค. if
๋ฌธ ์ฌ์ฉ||
๋ ผ๋ฆฌ ์ฐ์ฐ์ ์ฌ์ฉnull
์ฌ์ฉ
// 1. if๋ฌธ
function showMessage(text){
if (text === undefined){
text = 'empty';
}
alert(text);
}
showMessage(); // empty
// 2. ||
function showMessage(text){
text = text || 'empty';
...
}
// 3. null
function showCount(count){
alert(count ?? 'unknown');
}
showCount(0); //0
showCount(null); // unknown
showcount(); // unknown
5. ๋ฐํ ๊ฐ
ํจ์๋ฅผ ํธ์ถ ํ์ ๋ ํจ์๋ฅผ ํธ์ถํ ๊ทธ๊ณณ์ ํน์ ๊ฐ์ ๋ฐํํ๊ฒ ํ ์ ์๋ค. ์ด ํน์ ๊ฐ์ ๋ฐํ ๊ฐ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
return
์ ํจ์ ๋ด ์ด๋์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์คํ ํ๋ฆ์ด ์ง์์ return
์ ๋ง๋๋ฉด ํจ์ ์คํ์ ์ฆ์ ์ค๋จ ๋๊ณ ํจ์๋ฅผ ํธ์ถํ ๊ณณ์ ๊ฐ์ ๋ฐํํ๋ค. ๋ ํจ์ ํ๋์ ์ฌ๋ฌ๊ฐ์ return
๋ฌธ์ด ์ฌ ์ ์๋ค.
function checkAge(age){
if ( age >= 18 ){
return true;
} else {
return confirm('are you sure?');
}
}
let age = prompt('how old are you?', 18);
if ( checkAge(age) ){
alert('Good');
} else{
alert('Nope');
}
-
return
๋ฌธ์ด ์๊ฑฐ๋return
์ง์์๋ง ์๋ ๊ฒฝ์ฐ์undefined
๋ฅผ ๋ฐํํ๋ค.
function doNothin() {
return;
}
alert( doNothing() === undefined); // true
return
์ง์๋ฌธ์ return๋ฌธ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ ์๋์ผ๋ก ๋ฃ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ์ค์ ์์ฑ ํ ๋๋ ์๋์ ๊ฐ์ด ์์ฑ์ ํด์ผ๋๋ค
return (
some + long + expression
+ or +
whatever * f(a) + f(b)
)
6. ํจ์ ์ด๋ฆ ์ง๊ธฐ
ํจ์ ์ด๋ฆ์ ๊ฐ๋ฅํ ๊ฐ๊ฒฐํ๊ณ ๋ช ํํด์ผ ํ๋ค. ํจ์๊ฐ ์ด๋ค ๋์์ ํ๋์ง ์ค๋ช ํ ์ ์๋๋ก. ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ด ํจ์ ์ด๋ฆ๋ง ๋ณด๊ณ ๋ ํจ์๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง ํํธ๋ฅผ ์ป์ ์ ์์ด์ผ ํ๋ค.
ํจ์๊ฐ ์ด๋ค ๋์์ ํ๋์ง ์ถ์ฝํด์ ์ค๋ช ํด์ฃผ๋ ๋์ฌ๋ฅผ ์ ๋์ด๋ก ๋ถ์ฌ ํจ์ ์ด๋ฆ์ ๋ง๋๋๊ฒ ๊ด์ต์ด๋ค.
get
- ๊ฐ์ ๋ฐํ ํจcalc
- ๋ฌด์ธ๊ฐ๋ฅผ ๊ณ์ฐํจcreate
- ๋ฌด์ธ๊ฐ๋ฅผ ์์ฑํจcheck
- ๋ฌด์ธ๊ฐ๋ฅผ ํ์ธํ๊ณ ๋ถ๋ฆฐ๊ฐ์ ๋ฐํํจ
ํจ์๋ ๋์ ํ๋๋ง ๋ด๋นํ๋๊ฒ์ด ์ข๋ค.
ํจ์๋ ํจ์ ์ด๋ฆ์ ์ธ๊ธ๋์ด ์๋ ๋์์ ์ ํํ ์ํํด์ผ ํ๋ค.
์ํ ํ์์ ์ ๋์ด ์๋ฏธ๋ฅผ ์ฌํฉ์ ํ์ฌ ํจ์๋ฅผ ๋ง๋ค ์๋ ์์ง๋ง, ์ ๋์ด๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ ์ด๋ฆ์ ์ง์๋๋ ํด๋น ์ ๋์ด์ ์ด๋ค ์๋ฏธ๊ฐ ์๋์ง ์ ์ดํดํด์ผ ํ๋ค.
ํจ์ == ์ฃผ์
ํจ์๋ ๊ฐ๊ฒฐํ๊ณ , ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ์ํํ ์ ์๊ฒ ๋ง๋ค์ด์ผ ํ๋ค.
ํจ์๊ฐ ๊ธธ์ด์ง๋ฉด ํจ์๋ฅผ ์๊ฒ ์ชผ๊ฐค ๋๊ฐ ๋์๋ค๋ ์ ํธ!
ํจ์๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค๋ฉด ํ ์คํธ์ ๋๋ฒ๊น ์ด ์ฌ์์ง๊ณ ํจ์ ๊ทธ ์์ฒด๋ก ์ฃผ์์ ์ญํ ๊น์ง ํ๋ค!
// 1๋ฒ
function showPrimes(n) {
nextPrime: for (let i = 2; i < n; i++) {
for (let j = 2; j < i; j++ ) {
if (i % j ==0) continue nextPrime;
}
alert(i); // ์์
}
}
// 2๋ฒ
function showPrimes(n) {
for (let i = 2; i < n; i++) {
if (!isPrime(i)) continue;
alert(i); // ์์
}
}
function isPrime(n){
for (let i ==2; i < n; i++) {
if (n % i ==0) return false;
}
return true;
}
๋๋ฒ์งธ๊ฐ ํจ์ฌ ๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ๊ฐ๋
์ฑ์ด ๋๋ค. isPrime
ํจ์ ์ด๋ฆ์ ๋ณด๊ณ ํด๋น ํจ์๊ฐ ์์์ฌ๋ถ๋ฅผ ๊ฒ์ฆํ๋ ๋์์ ํ๋ค๋๊ฒ์ ์ ์ ์๋ค. ์ด๋ ๊ฒ ์ด๋ฆ๋ง ๋ณด๊ณ ์ด๋ค ๋์์ ํ๋์ง ์ ์ ์๋ ์ฝ๋๋ฅผ ์๊ธฐ ์ค๋ช
์ (self-describing)์ฝ๋
๋ผ๊ณ ํ๋ค.
์๋ฃ ์ถ์ฒ : https://ko.javascript.info
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ([JavaSciprt] ํจ์), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@jin0106/JavaSciprt-Function์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค