관리 메뉴

gi_dor

pre-training JavaScript (7) ν•¨μˆ˜ λ³Έλ¬Έ

Language/JavaScript

pre-training JavaScript (7) ν•¨μˆ˜

기돌 2023. 10. 18. 18:27

πŸ’» κ΅­λΉ„ 7 일차


πŸ“š ν•¨μˆ˜

•  ν•¨μˆ˜λž€

  • 이름 μžˆλŠ” μ½”λ“œμ˜ λΈ”λŸ­
  • μ½”λ“œ 블둝 β–Ά μˆ˜ν–‰λ¬Έμ˜ λͺ¨μŒ  (νŠΉλ³„ν•œ κΈ°λŠ₯이 μžˆλŠ” μ½”λ“œλ“€μ΄ λͺ¨μ—¬ 있음)

• ν•¨μˆ˜ μ •μ˜

function ν•¨μˆ˜μ΄λ¦„(){
	싀행될 λ¬Έμž₯ - μˆ˜ν–‰λ¬Έ
}

• ν•¨μˆ˜ μ‚¬μš© - ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€ / ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œλ‹€

ν•¨μˆ˜μ΄λ¦„();

 


• 인자 ( argument )

  • ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ 전달 ν•΄μ•Ό ν•˜λŠ” μ‹€μ œ κ°’
name("Han");	// 전달할 인자 "Han" , 'name' ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ "Han"이 μ „λ‹¬λœλ‹€.
gugu(3); 	// 전달 ν•  인자 2 'gugu'ν•¨μˆ˜μ˜ dan의 λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λœλ‹€.
gugu(9); 	// 전달 ν•  인자 9

μΈμžμ™€ μΈμˆ˜λŠ” 같은 의미둜 μ‚¬μš©λœλ‹€.
1 , 3 , 9 κ°€ 인수 / 인자 라고 ν•œλ‹€


• λ§€κ°œλ³€μˆ˜ ( parameter )

  • ν•¨μˆ˜ λ‚΄μ—μ„œ μ‚¬μš©λœλ‹€.
  • ν•¨μˆ˜μ˜ κ΄„ν˜Έ μ•ˆμ— μ§€μ •λ˜λŠ” λ³€μˆ˜ 
  • ν•¨μˆ˜λ₯Ό 호좜 μ‹œ 전달받은 인자/인수 κ°’
// ν•¨μˆ˜ μ •μ˜ν•˜κΈ° 
function gugu(dan){  // μ—¬κΈ°μ„œ dan은 λ§€κ°œλ³€μˆ˜ , ν•¨μˆ˜ ν˜ΈμΆœμ‹œ 전달 받은 κ°’
    console.log(dan, "단 을 좜λ ₯ν•©λ‹ˆλ‹€");
 
    for(let i = 1; i <= 9; i++){
        console.log(dan, " * " , i , " = ", dan*i)
    }
};

 

• 점수λ₯Ό 전달받아 총점과 평균을 κ΅¬ν•˜μ‹œμ˜€

// κ΅­μ–΄ μ˜μ–΄ μˆ˜ν•™ 점수λ₯Ό 전달받아 총점을 κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜
function totalScore(kor,eng,math){	// λ§€κ°œλ³€μˆ˜ kor , eng , math

    let total = kor + eng + math;
    console.log("총점 : ", total);
}

// κ΅­μ–΄ μ˜μ–΄ μˆ˜ν•™ 점수λ₯Ό 전달받아 평균을 κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜
// function averageScore(total){
//     let average = total / 3;
//     console.log("평균 : ",average);
// }

function averageScore(kor,eng,math){
    let total = kor + eng + math;
    let average = total / 3;
    console.log("평균 : ",average);
}

// 총점
totalScore(70,60,90);		// 전달 해쀄 인자 / 인수 70,60,90
totalScore(100,90,60);
totalScore(90,60,50);

console.log();

// 평균
averageScore(70,60,90);
averageScore(100,90,60);
averageScore(90,60,50);

• return 

  • 값을 λ°˜ν™˜ν•˜λŠ” μˆ˜ν–‰λ¬Έ
  • 값은 1개만 λ°˜ν™˜ν•  수 μžˆλ‹€. 
  • ν•¨μˆ˜μ˜ 싀행을 μ¦‰μ‹œ μ’…λ£Œν•¨
let result = totalScore(100,80,60);

function totalScore(kor,eng,math){
 	let total = kor + eng + math ;
    
    return total;  // return문은 ν•¨μˆ˜μ˜ κ²°κ³Ό 값을 ν˜ΈμΆœν•œ μ½”λ“œλ‘œ λ°˜ν™˜ ν•œλ‹€.
    // 결과인 total을 μ€˜μ•Όν•˜κΈ° λ•Œλ¬Έμ— result라고 적으면 μ•ˆλœλ‹€
    console.log("이곳은 κ³Όμ—° μ‹€ν–‰λ κΉŒ?") // return문을 λ§Œλ‚˜λ©΄ ν•¨μˆ˜λ₯Ό μ¦‰μ‹œ μ’…λ£Œν•΄μ„œ μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.
    }
/*
κ΅­μ–΄ μ˜μ–΄ μˆ˜ν•™ 점수λ₯Ό μ „λ‹¬λ°›μ•„μ„œ 총점을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ‹€.
ν•¨μˆ˜λͺ… : totalScore
λ§€κ°œλ³€μˆ˜: kor , eng , math 각각 κ΅­μ–΄ , μ˜μ–΄ , μˆ˜ν•™μ μˆ˜λ₯Ό λœ»ν•œλ‹€
λ°˜ν™˜ κ°’ : 총점
*/

function totalScore(kor,eng,math){
   // kor + eng + math 합계λ₯Ό κ΅¬ν•΄μ„œ total μ΄λΌλŠ” λ³€μˆ˜μ— μ €μž₯ν•œλ‹€.
   let total = kor + eng + math;

    return total;
}

function averageScore(kor,eng,math){
    // totalScore ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•΄ 총점을 λ°˜ν™˜ν•¨ ( 총점 계산 μ•ˆν•΄λ„λ¨ )
    let total = totalScore(kor,eng,math);	// μƒμœ„μ— totalScore ν•¨μˆ˜ μ‚¬μš©
    let average = total / 3;  // average 값을 μ „λ‹¬ν•΄μ•Όν•˜λ‹ˆ
    
    return average;		// 이곳에 average
}


// 총점
console.log("총점 κ³„μ‚°ν•˜κΈ°");
let result1 = totalScore(70,60,90);
let result2 = totalScore(100,90,60);
let result3 = totalScore(90,60,50);

console.log("첫번째 총점 : ",result1);
console.log("λ‘λ²ˆμ§Έ 총점 : ",result2);
console.log("μ„Έλ²ˆμ§Έ 총점 : ",result3);



// 평균
console.log()

let avg1 = averageScore(70,60,90);
let avg2 = averageScore(100,90,60);
let avg3 = averageScore(90,60,50);

console.log("첫번째 평균 :",avg1);
console.log("λ‘λ²ˆμ§Έ 평균 :",avg2);
console.log("μ„Έλ²ˆμ§Έ 평균 :",avg3);

 

πŸ“Œ μΆ”κ°€ λ‚΄μš© 

return문을 μ‚¬μš© ν•˜κ²Œ λœλ‹€λ©΄ ν•¨μˆ˜μ˜ κ²°κ³Ό 값을 ν˜ΈμΆœν•œ μ½”λ“œλ‘œ λ°˜ν™˜ ν•˜λŠ”λ°
λ°˜ν™˜λœ 값은 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ μœ„μΉ˜μ—μ„œ ' λ‹€λ₯Έ 연산에 μ‚¬μš© 될수 μžˆλ‹€ '

function sum(x,y){
 return x + y;
 }
 
 let add = sum(7,2);  // μ΄λ ‡κ²Œ 되면 add λ³€μˆ˜μ— 9κ°€ μ €μž₯이 λœλ‹€
 console.log(add); // 9 좜λ ₯
 
 let squard = add * add;
 console.log(squard);	// 9 * 9  = 81 좜λ ₯.
 
 let divided = add / 2 ;
 console.log(divided);	// 4.5 좜λ ₯
 
 let increase = add + 17;
 console.log(increase);	// 26 좜λ ₯

β–Ά λ‹¨μˆœν•˜κ²Œ return 없이 ν•¨μˆ˜λ§Œ μ •μ˜ ν–ˆλ‹€λ©΄ 좔후에 λ‹€λ₯Έ 연산에 μ‚¬μš© ν•  μˆ˜λŠ” μ—†λ‹€
     λ‹¨μ§€ console.logλ₯Ό 찍어 좜λ ₯만 ν• μˆ˜ μžˆλ‹€.


μ—¬κΈ°μ„œ λΆ€ν„° 쑰금 λ³΅μž‘ν•˜λ‹€ λ‚˜ λ˜ν•œ λͺ¨λ“  μ½”λ“œλ₯Ό 이해 ν•˜μ§€ λͺ»ν–ˆλ‹€ 
// 둜그인 체크 ν•„ν„°ν•¨μˆ˜ ?
// λ§€κ°œλ³€μˆ˜λ‘œ userId와 passwordλ₯Ό μž…λ ₯λ°›κ³ 
function login1(userId , password){
	// μ‚¬μš©μž Idκ°€ μ—†μœΌλ©΄ μ¦‰μ‹œμ’…λ£Œ
    // idκ°€ μ—†λ‹€κ³  ν•˜λ‹ˆ 
    // undefined 값이 μ—†λ‹€κ³  ν•œλ‹€. - idλ₯Ό μž…λ ₯을 ν•˜μ§€ μ•Šμ•˜μŒ
	if( userId == undefined){ 
    		console.log("아이디λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”");  // μ›Ή μ°½μ—μ„œλŠ” alertλ₯Ό 쓰겠지 ?
            return ;  
            }
            
            // userIdλ₯Ό μž…λ ₯ν–ˆλ‹€.
      	let userInfo = getUserInfo(userId);
        // if 문으둜 λ§Œμ•½ μ‚¬μš©μž 정보가 λΉ„μ–΄μžˆμœΌλ©΄ μ¦‰μ‹œμ’…λ£Œ 
        // 아이디와 μΌμΉ˜ν•˜λŠ” μ‚¬μš©μž 정보가 μ—†μŒ, νšŒμ›κ°€μž… μ•ˆλ˜μžˆλ‹¨ μ†Œλ¦¬μ§€
        if(userInfo == null){
        	console.log("κ°€μž… λ˜μ–΄μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€");
         	return;
            }
            
        // 쑰회된 λΉ„λ°€λ²ˆν˜Έμ™€ 전달받은 λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ μ¦‰μ‹œμ’…λ£Œ
        if(userInfo.password != password){
        	console.log("λΉ„λ°€λ²ˆν˜Έκ°€ 일치 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€." );
        	return;
            }
            
            // 이 λΆ€λΆ„μ˜ 싀행문이 μž‘λ™ν•˜λŠ” κ²½μš°λŠ” 
            // 1. 아이디λ₯Ό 전달받고 
            // 2. μ•„μ΄λ””λ‘œ μ‘°νšŒν•œ μ‚¬μš©μžκ°€ 정보가 μ‘΄μž¬ν•˜λ©°
            // 3. λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜λŠ” κ²½μš°μ—λ§Œ 둜그인 성곡
            
   }

 

function login2(userId , password){
    if (userId != undefined){
            let userInfo = getUserInfo(userId);
            if(userInfo != null){
                if(userInfo.password == password){
                    // 둜그인 성곡함
                    // 이메일 , μͺ½μ§€ 쑰회
                    // ν™ˆν™”λ©΄ 좜λ ₯
                }else {
                    console.log("λΉ„λ°€λ²ˆν˜Έ ν‹€λ¦Ό");
                }

            }else {
                console.log("μ‚¬μš©μž 정보가 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€");
            }

    } else {
        console.log("아이디λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”");
    }
}

 

πŸ“Œ μΆ”κ°€ λΆ€λΆ„

성인 인증을 ν•˜κΈ°μœ„ν•œ ν•¨μˆ˜ ?

function checkfilterAdult(age){
	if(age < 0 ){	// μž…λ ₯ν•œ 값이 μŒμˆ˜κ°€ 될수 μ—†κ²Œ
     	return false;
        } else if( age <= 19 ) {
        return false;	// 19μ„Έ μ΄ν•˜ λ―Έμ„±λ…„μž
        } else  {
        return true;	// 19 초과 성인
        }

 


• λ‹€μ–‘ν•œ μœ ν˜•μ˜ λ§€κ°œλ³€μˆ˜

// λ‹€μ–‘ν•œ μœ ν˜•μ˜ λ§€κ°œλ³€μˆ˜


// μˆ«μžκ°’μ„ 인자둜 μ „λ‹¬λ°›λŠ” ν•¨μˆ˜    
// 숫자 2개λ₯Ό μ „λ‹¬λ°›μ•„μ„œ 더 큰값을 λ°˜ν™˜ν•œλ‹€.
function max(num1, num2){
    if(num1 > num2){
        return num1;
    }
    // μœ„μ— if문에 쑰건이 false 일경우 μžλ™μœΌλ‘œ ν•˜λ‹¨ μ½”λ“œλ‘œ λ„˜μ–΄μ™€ num2 κ°€ λ°˜ν™˜λœλ‹€.
    return num2;
}

let max1 = max(20,70);
let max2 = max(60,25);

console.log("큰 κ°’:",max1);
console.log("큰 κ°’:",max2);
// λ¬Έμžκ°’μ„ 인자둜 μ „λ‹¬λ°›λŠ” ν•¨μˆ˜
// λ§€κ°œλ³€μˆ˜μ—λŠ” λ¬Έμžκ°’μ΄ μ €μž₯λœλ‹€.
// 이름을 전달받아 λ‘λ²ˆμ§Έ κΈ€μžλ₯Ό "*" 둜 λ³€ν™˜ν•œ 문자λ₯Ό λ°˜ν™˜ ν•œλ‹€.


// 사싀 μ—¬κΈ°λΆ€ν„° μ–΄λ ΅λ‹€ μ™œλƒν•˜λ©΄ split κΉŒμ§€λŠ” μ•Œκ³  μžˆμ§€λ§Œ κ·Έ μ΄ν›„λΆ€ν„°λŠ” λͺ¨λ₯΄κ² λ‹€..


 // name λ¬Έμžμ—΄μ˜ 각 κΈ€μžλ₯Ό λ°°μ—΄λ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.
 // 예: "ν•œκΈ°μ„ " -> ["ν•œ", "κΈ°", "μ„ "]
// λ³€ν™˜λœ λ°°μ—΄μ˜ 각 μš”μ†Œ(κΈ€μž)와 ν•΄λ‹Ή μš”μ†Œμ˜ μΈλ±μŠ€μ— λŒ€ν•΄ ν•¨μˆ˜λ₯Ό μ‹€ν–‰
// λ§Œμ•½ ν˜„μž¬ μš”μ†Œμ˜ μΈλ±μŠ€κ°€ 1이라면 (즉, 두 번째 κΈ€μžλΌλ©΄)
// '*'λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
// μΈλ±μŠ€κ°€ 1이 μ•„λ‹Œ 경우, μ›λž˜μ˜ κΈ€μžλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
// λ°°μ—΄μ˜ μš”μ†Œλ“€μ„ λ‹€μ‹œ λ¬Έμžμ—΄λ‘œ ν•©μΉ©λ‹ˆλ‹€.
// 예: ["ν•œ", "*", "μ„ "] ->  "ν•œ*μ„ " 

   function hideName(name){
   return name.split("").map(function(value,index){
        if(index == 1){
            return "*";
        }
        return value;
    }).join ("");
}

console.log(hideName("ν•œκΈ°μ„ "));
console.log(hideName("κΉƒν—ˆλΈŒ"));

 

// λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œμ˜ 합계λ₯Ό κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜
// 배열을 인자둜 μ „λ‹¬λ°›λŠ” ν•¨μˆ˜

// 배열객체λ₯Ό μ°Έμ‘°ν•˜λŠ” μ£Όμ†Œκ°’μ„ μ „λ‹¬λ°›μŒ
// μ£Όμ†Œκ°’μ„ 전달받을 λ§€κ°œλ³€μˆ˜λ„ μ£Όμ†Œκ°’μ— ν•΄λ‹Ήν•˜λŠ” 배열객체

function sum(arr){
// total μ΄λΌλŠ” λ³€μˆ˜λ₯Ό 0으둜 μ΄ˆκΈ°ν™” ν•΄μ„œ λͺ¨λ“  μš”μ†Œμ˜ 합계λ₯Ό μ €μž₯ν•  λ³€μˆ˜λ‘œ μ‚¬μš© ν•˜κ² λ‹€.
    let total = 0;
    // λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•΄ λ°°μ—΄μ˜ μš”μ†Œλ₯Ό 순회 ν•œλ‹€
    // νšŸμˆ˜λŠ” 0λΆ€ν„° arr.length - 1 κΉŒμ§€ 증가 ν•œλ‹€
    // 반볡문 내에 total에 ν˜„μž¬ arr[index]에 μžˆλŠ” μš”μ†Œμ˜ 값을 계속 ν•΄μ„œ 더해간닀.
        for(let index = 0; index < arr.length; index++){
            total += arr[index];
        }
        return total;
}

// λ°°μ—΄ number μ •μ˜ ν•˜κ³  λ°°μ—΄μ˜ 6개의 μš”μ†Œλ₯Ό ν• λ‹Ήν–ˆλ‹€.
let numbers = [10,20,40,60,70,80];
// μœ„μ—μžˆλŠ” sum ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄μ„œ number에 μžˆλŠ” 배열을 인자둜 μ „λ‹¬ν–ˆλ‹€.
let sumResult = sum(numbers);
// sumν•¨μˆ˜μ— μžˆλŠ” 
// λ°˜λ³΅λ¬Έμ— μ˜ν•΄ 10 20 40 60 70 80 총 6회 λ°˜λ³΅ν•΄ totalμ΄λΌλŠ” λ³€μˆ˜μ— 계속 λ”ν–ˆλ‹€.
// 총합은 280이 λ˜μ—ˆμœΌλ©°
// 좜λ ₯창에 sumResult : 280 이라고 좜λ ₯이 λ˜μ—ˆλ‹€.

console.log("sumResult : ",sumResult);



let sumResult2 = sum([30,30,20,30]);
console.log("sumResult2",sumResult2);

 

❗ λŒ€λ°•μ‚¬κ±΄

ν•¨μˆ˜μ—μ„œ κ±°μŠ¬λ¦¬λŠ” 뢀뢄이 μžˆλ‹€

 let total = 0;  // μ—¬κΈ° 뢀뢄이 κ±°μŠ¬λ Έλ‹€
 
 let total; // ν•˜λ©΄ μ•ˆλ κΉŒ?

닡은 0 으둜 μ΄ˆκΈ°ν™” λ₯Ό λ°˜λ“œμ‹œ ν•΄μ•Όν•œλ‹€

function sum(arr){
    let total = 0;
    for(let index = 0; index < arr.length; index++){
        total += arr[index];
    }
    return total;
}


// let total; κΉŒμ§€λ§Œ ν•˜κ²Œλœλ‹€λ©΄ total 은 undefinedκ°€ λœλ‹€.
// undefied에 숫자λ₯Ό λ”ν•˜κ²Œ 되면 
// κ²°κ³Ό 값이 NaN 이 좜λ ₯μ΄λœλ‹€.


• μ§€μ—­λ³€μˆ˜ - Local Variale

  • ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜λ₯Ό 지역 λ³€μˆ˜λΌκ³  ν•œλ‹€.
  • ν•¨μˆ˜ λ‚΄μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€
  • ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜ λ˜ν•œ μ§€μ—­λ³€μˆ˜λ‹€
function thisLocalVariable(x,y){
// x 와 yλŠ” λ§€κ°œλ³€μˆ˜λ‘œ μ§€μ—­λ³€μˆ˜λ‹€. 

// ν•¨μˆ˜ 내뢀에 μ„ μ–Έλœ μ§€μ—­λ³€μˆ˜
let lv = 10;
let lv2 = "It's me";

// x 와 y lv lv2 λͺ¨λ‘ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 접근이 κ°€λŠ₯ν•˜λ‹€.
console.log(x,y,lv,lv2);
}

thisLocalVariable(17,21);


• μ „μ—­λ³€μˆ˜

  • ν•¨μˆ˜ 외뢀에 μ„ μ–Έλœ λ³€μˆ˜λ₯Ό μ „μ—­λ³€μˆ˜ 라고 ν•œλ‹€.
  • μ½”λ“œμ˜ μ–΄λŠ κ³³μ—μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€
// ν•¨μˆ˜ 외뢀에 μ„ μ–Έλ˜μ—ˆκΈ°μ— μ „μ—­λ³€μˆ˜λ‹€
let gv = " This is GV " ;

// x 와 yλŠ” λ§€κ°œλ³€μˆ˜λ‘œ μ§€μ—­λ³€μˆ˜ 성격을 가지고 μžˆλ‹€.
function showVariable(x,y){

// ν•¨μˆ˜ 내뢀에 μ„ μ–Έλœ μ§€μ—­λ³€μˆ˜, ν•¨μˆ˜ λ°–μ—μ„œλŠ” μ ‘κ·ΌλΆˆκ°€
let lv = 10;
let lv2 = "It's me";

// x 와 y , lv , lv2 λͺ¨λ‘ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 접근이 κ°€λŠ₯ν•˜λ‹€.
console.log(x,lv);
console.log(gv);
}

showVariable(17,21);

// lv , lv2 μ§€μ—­λ³€μˆ˜λŠ” ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ν•˜κΈ°μ— 이처럼 μ™ΈλΆ€μ—μ„œ 
// 좜λ ₯을 μ‹œλ„ν•˜λ©΄ ReferenceError: lv is not defined κ°€ λ°œμƒν•œλ‹€.
console.log(lv,lv2);

 

728x90