JiYoung Dev πŸ–₯

javascript λ°°μ—΄ μ‹€μŠ΅, ν•¨μˆ˜ (2023.04.27) λ³Έλ¬Έ

full stack/JavaScript

javascript λ°°μ—΄ μ‹€μŠ΅, ν•¨μˆ˜ (2023.04.27)

Shinjio 2023. 4. 27. 18:10

🎈 λ°°μ—΄ μ‹€μŠ΅ 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>array practice</title>
    <style>
        table, td{
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <script>
        // κ³Όλͺ©μ μˆ˜, 이름을 λ°°μ—΄λ‘œ μž…λ ₯받을 λ•Œλ§ˆλ‹€ 배열에 μΆ”κ°€ν•˜λŠ” λ°©λ²•μœΌλ‘œ...
        // 0. κ³Όλͺ© 수, κ³Όλͺ© 이름, κ³Όλͺ© 점수, 총점, 평균 μ΄ˆκΈ°ν™”
        //κ³Όλͺ© 수 λ³€μˆ˜ μ„ μ–Έ
        let subNum = 0;
        // κ³Όλͺ© 이름 μ €μž₯ λ°°μ—΄ μ„ μ–Έ
        let subName = [];
        // 점수 μ €μž₯ λ°°μ—΄ μ„ μ–Έ
        let subScore = [];
        // 총점 λ³€μˆ˜ μ„ μ–Έ
        let totalScore = 0;
        // 평균 μ΄ˆκΈ°ν™”
        let avgScore = 0;

        // 1. κ³Όλͺ© 수 μž…λ ₯ 
        subNum = Number(prompt('κ³Όλͺ© 수 μž…λ ₯'));
        
        // 2. κ³Όλͺ© 수만큼 κ³Όλͺ© 이름 μž…λ ₯
        for(let i = 0 ; i < subNum ; i++){
            subName.push(prompt('점수λ₯Ό μž…λ ₯ν•  κ³Όλͺ©μ„ μž…λ ₯ν•˜μ„Έμš”.'));
        }

        console.log(subName);

        // 3. 각 κ³Όλͺ©λ“€μ˜ 점수λ₯Ό μž…λ ₯
        // 000의 점수 μž…λ ₯
        // 4. 총점, 평균값을 λ„μΆœ
        for(let i = 0 ; i < subName.length ; i++){
            let score = Number(prompt(`${subName[i]}의 점수λ₯Ό μž…λ ₯`));
            subScore.push(score);
            totalScore += score;
        }

        avgScore = parseInt(totalScore / subScore.length);

        console.log(subScore);
        console.log(totalScore);
        console.log(avgScore);

        // 5. κ²°κ³Όλ₯Ό HTML λ‚΄ ν‘œ ν˜•νƒœλ‘œ 좜λ ₯
        // κ³Όλͺ© 이름1, κ³Όλͺ© 이름2,  ..., 총점, 평균
        // κ³Όλͺ© 점수1, κ³Όλͺ© 점수2,  ..., total, avg
        document.write(`
            <table>
                <tr>
            `);

        for(let i = 0 ; i < subNum ; i++){
            document.write(`
                    <td>${subName[i]}</td>
            `)
        }

        document.write(`
                    <td>총점</td>
                    <td>평균</td>
                </tr>
                <tr>
            `)
            for(let i = 0 ; i < subNum ; i++){
            document.write(`
                    <td>${subScore[i]}</td>
            `)
        }
        document.write(`
                    <td>${totalScore}</td>
                    <td>${avgScore}</td>
                </tr>
            </table>
        `)

    </script>
</body>
</html>

 

🎈 ν•¨μˆ˜

νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ†ŒμŠ€ μ½”λ“œλ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄ ν•„μš”ν•  λ•Œλ§ˆλ‹€ ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•˜κΈ° μœ„ν•œ ꡬ쑰 

 

 

// ν•¨μˆ˜ : νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ†ŒμŠ€ μ½”λ“œλ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄μ„œ 
//          ν•„μš”ν•  λ•Œλ§ˆλ‹€ μ‚¬μš©ν•˜κΈ° μœ„ν•œ ꡬ쑰 

// ν•¨μˆ˜ μ„ μ–Έ
function intro() {
    console.log('μ•ˆλ…•ν•˜μ„Έμš”. μ €λŠ” μ‹ μ§€μ˜μž…λ‹ˆλ‹€πŸ‘©');
}

// ν•¨μˆ˜ 호좜
intro();

// λ§€κ°œλ³€μˆ˜
function lunch(menu) {
    console.log(`μ μ‹¬μœΌλ‘œλŠ” ${menu} λ¨Ήμ—ˆμŠ΅λ‹ˆλ‹€πŸ₯°`);
}

lunch('가츠동');

// λ§€κ°œλ³€μˆ˜ + returnλ¬Έ
function dinner(menu){
    return `μ €λ…μœΌλ‘œλŠ” ${menu} 먹을 κ±°μ—μš”!😸`;
}

console.log(dinner('라면'));

 

μœ„μ™€ 같이 ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜λ©΄ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•  수 있음!

 

πŸ“– ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…

선언문이 μ½”λ“œμ˜ μ„ λ‘λ‘œ λŒμ–΄μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ λ™μž‘ν•˜λŠ” ν˜„μƒ

즉, 선언문이 아직 μ„ μ–Έλ˜μ§€ μ•Šμ•˜λŠ”λ° μ„ μ–Έλœ κ²ƒμ²˜λŸΌ λ™μž‘

 

// ν˜Έμ΄μŠ€νŒ… : 선언문이 μ½”λ“œμ˜ μ„ λ‘λ‘œ λŒμ–΄μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ λ™μž‘ν•˜λŠ” ν˜„μƒ

// μ†ŒμŠ€μ½”λ“œ 처리 κ³Όμ • : 평가 단계 >> μ‹€ν–‰
// 평가 : λͺ¨λ“  μ„ μ–Έλ¬Έ(λ³€μˆ˜, ν•¨μˆ˜ λ“±) 등둝
// μ‹€ν–‰(λŸ°νƒ€μž„)

// λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ… 
// λ³€μˆ˜ μ„ μ–Έ ν‚€μ›Œλ“œ var μ‚¬μš©μ‹œ λ°œμƒ
console.log(lunchMenu);
// undefined ->  μ„ μ–ΈO, ν• λ‹ΉX
var lunchMenu = 'λ―Έλ‹ˆλˆκΉŒμŠ€';
console.log(lunchMenu);
// console.log(dinnerMenu);
// let dinnerMenu = 'μ—°μ–΄μ΄ˆλ°₯';

// ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…
hoisting('μœ„')
function hoisting(val) {
    console.log(val, 'ν•¨μˆ˜ μ„ μ–Έλ¬Έ');
}
hoisting('μ•„λž˜');

hoisting2('μœ„')
const hoisting2 = function(val){
    console.log(val, 'ν•¨μˆ˜ ν‘œν˜„μ‹');
}
hoisting2('μ•„λž˜')

 

hoistingμ΄λΌλŠ” ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜κΈ° 선에 hoisting을 μ‚¬μš©ν•˜μ˜€λŠ”λ°λ„ 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠμŒ → ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…

 

μ›λž˜λŠ” μ•„λž˜μ™€ 같이 였λ₯˜κ°€ λ°œμƒν•΄μ•Ό 정상

 

 

ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ… κ²°κ³Ό

 

 

ν•¨μˆ˜κ°€ μ„ μ–Έλ˜κΈ° 전에 호좜이 됨(ν˜Έμ΄μŠ€νŒ… λ°œμƒ) >> μ•ˆμ •ν™” μž‘μ—… ν•„μš” >> ν•¨μˆ˜ ν‘œν˜„μ‹ ν˜Ήμ€ ν™”μ‚΄ν‘œ ν•¨μˆ˜ μ‚¬μš©!

 

πŸ“– ν•¨μˆ˜ ν‘œν˜„μ‹

 

λ³€μˆ˜λ‘œ μ°Έμ‘°ν•˜μ—¬ 읡λͺ… ν•¨μˆ˜λ‘œ μ„ μ–Έ

(읡λͺ…ν•¨μˆ˜ : 이름이 μ—†λŠ” ꡬ쑰 > λ³€μˆ˜μ˜ ν˜•νƒœλ‘œ λ§Œλ“€μ–΄ μ°Έμ‘°μ‹œν‚€λŠ” ꡬ쑰)

 

 

// ν•¨μˆ˜ ν‘œν˜„μ‹ : 읡λͺ… ν•¨μˆ˜μ˜ ν˜•νƒœλ‘œ ν•¨μˆ˜λ₯Ό μ„ μ–Έ -> λ³€μˆ˜ μ°Έμ‘°
// λ³€μˆ˜λ‘œλŠ” const둜 μ‚¬μš©ν•˜λŠ”κ²Œ μ’‹μŒ 
// let μ‚¬μš©μ‹œ λ‚˜μ€‘μ— 값을 λ³€κ²½ν•  수 있기 λ•Œλ¬Έμ—
// function(λ§€κ°œλ³€μˆ˜) -> 읡λͺ…ν•¨μˆ˜ 

const intro = function(){
    console.log('μ•ˆλ…•ν•˜μ„Έμš”. μ €λŠ” μ‹ μ§€μ˜μž…λ‹ˆλ‹€πŸ±');
}
intro();

// λ§€κ°œλ³€μˆ˜
const lunch = function(menu) {
    console.log(`μ μ‹¬μœΌλ‘œλŠ” ${menu} λ¨Ήμ—ˆμŠ΅λ‹ˆλ‹€πŸ₯°`);
}

lunch('가츠동');

// λ§€κ°œλ³€μˆ˜ + returnλ¬Έ
const dinner = function(menu){
    return `μ €λ…μœΌλ‘œλŠ” ${menu} 먹을 κ±°μ—μš”!😸`;
}

console.log(dinner('라면'));

 

πŸ“– ν™”μ‚΄ν‘œ ν•¨μˆ˜

 

// ν™”μ‚΄ν‘œ ν•¨μˆ˜ : ν•¨μˆ˜ ν‘œν˜„μ‹ ν˜•νƒœ, function ν‚€μ›Œλ“œ λŒ€μ‹  => μ‚¬μš©

const intro = ()=>{
    console.log('μ•ˆλ…•ν•˜μ„Έμš”. μ €λŠ” μ‹ μ§€μ˜μž…λ‹ˆλ‹€πŸ˜€πŸ˜€');
}
intro();

// λ§€κ°œλ³€μˆ˜
// λ§€κ°œλ³€μˆ˜ ν•˜λ‚˜μΌ λ•ŒλŠ” μ†Œκ΄„ν˜Έ() μƒλž΅ κ°€λŠ₯!
// μ‹€ν–‰λ‘œμ§ ν•œ 쀄일 λ•Œ μ€‘κ΄„ν˜Έ{} μƒλž΅ κ°€λŠ₯! 
// -> return ν‚€μ›Œλ“œ μžˆμ„ λ•ŒλŠ” return ν‚€μ›Œλ“œκΉŒμ§€ μƒλž΅ κ°€λŠ₯
// const lunch = (menu)=>{
//     console.log(`μ μ‹¬μœΌλ‘œλŠ” ${menu} λ¨Ήμ—ˆμŠ΅λ‹ˆλ‹€πŸ₯°`);
// }
const lunch = menu=>
    console.log(`μ μ‹¬μœΌλ‘œλŠ” ${menu} λ¨Ήμ—ˆμŠ΅λ‹ˆλ‹€πŸ₯°`);


lunch('가츠동');

// λ§€κ°œλ³€μˆ˜ + returnλ¬Έ
// const dinner = (menu)=>{
//     return `μ €λ…μœΌλ‘œλŠ” ${menu} 먹을 κ±°μ—μš”!😸`;
// }
const dinner = menu=>`μ €λ…μœΌλ‘œλŠ” ${menu} 먹을 κ±°μ—μš”!😸`;
console.log(dinner('라면'));

 

ν•¨μˆ˜ μ‹€μŠ΅ 1. λ”ν•˜κΈ° 문제

β€» ν•¨μˆ˜ 호좜 μ‹œ 뒀에 μ†Œκ΄„ν˜Έ μ λŠ” 것 κΉŒλ¨Ήμ§€ 말기!!!!!

// 두 개의 숫자λ₯Ό μž…λ ₯ λ°›κΈ°
let num1 = Number(prompt('첫번째 μ •μˆ˜ μž…λ ₯'));
let num2 = Number(prompt('λ‘λ²ˆμ§Έ μ •μˆ˜ μž…λ ₯'));

// 1. ν•¨μˆ˜ μ„ μ–Έλ¬Έ
function addNumber1(){
    return num1 + num2;
}

// 2. ν•¨μˆ˜ ν‘œν˜„μ‹
const addNumber2 = function(){
    return num1 + num2;
}

// 3. ν™”μ‚Ίν‘œ ν•¨μˆ˜
const addNumber3 = ()=>num1 + num2;

// 좜λ ₯ν•˜μ—¬ κ²°κ³Ό 확인
console.log('ν•¨μˆ˜ μ„ μ–Έλ¬Έ', addNumber1());
console.log('ν•¨μˆ˜ ν‘œν˜„μ‹', addNumber2());
console.log('ν™”μ‚΄ν‘œ ν•¨μˆ˜', addNumber3());
alert(addNumber1());

 

ν•¨μˆ˜ μ‹€μŠ΅ 2. ν”ΌλΌλ―Έλ“œ 문제

// 1. 이λͺ¨ν‹°μ½˜, ν–‰μ˜ 개수 μž…λ ₯ λ°›κΈ° 
let emo = prompt('이λͺ¨ν‹°μ½˜ μž…λ ₯ν•˜μ„Έμš”.');
let rowNum = Number(prompt('좜λ ₯ν•  ν–‰μ˜ 개수λ₯Ό μž…λ ₯ν•˜μ„Έμš”'));

// 2. 이λͺ¨ν‹°μ½˜μ„ ν–‰μ˜ κ°œμˆ˜μ— 맞좰 ν”ΌλΌλ―Έλ“œ ν˜•νƒœλ‘œ 좜λ ₯ν•˜λŠ” ν•¨μˆ˜ λ§Œλ“€κΈ°
//      ν•¨μˆ˜ λ§€κ°œλ³€μˆ˜ => 이λͺ¨ν‹°μ½˜, ν–‰μ˜ 개수
const print = (emo, rowNum)=>{
    for(let i = 1 ; i <= rowNum ; i++){
        for(let j = 1 ; j <= i ; j++){
            document.write(emo);
        }
        document.write(`<br>`);
    }
}

print(emo, rowNum);