관리 메뉴

gi_dor

01. JavaScript λ³Έλ¬Έ

Language/JavaScript

01. JavaScript

기돌 2024. 1. 12. 17:45
728x90

πŸ”Ά JavaScript κΈ°λ³Έ

  • λΈŒλΌμš°μ € λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  수 μžˆλŠ” ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄
  • Java와 문법적 μœ μ‚¬ν•œ 점이 λ§Žμ•„ μ‰½κ²Œ 배울 수 μžˆλ‹€
  • 인터프리터 ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄ ( β–Ά 컴파일 과정없이 μ†ŒμŠ€κ°€ μ‹€ν–‰νŒŒμΌλ‘œ μ‚¬μš©λœλ‹€ )
  1. μ›ΉνŽ˜μ΄μ§€μ˜ λ‚΄μš©μ„ μ •μ˜ν•˜λŠ” HTML
  2. μ›Ή νŽ˜μ΄μ§€μ˜ λ ˆμ΄μ•„μ›ƒμ„ μ§€μ •ν•˜λŠ” CSS
  3. μ›ΉνŽ˜μ΄μ§€μ˜ λ™μž‘μ„ ν”„λ‘œκ·Έλž˜λ°ν•˜λŠ” JavaScript

πŸ”Ή JS둜 ν•  수 μžˆλŠ” 일

  • HTML 컨텐츠λ₯Ό λ³€κ²½ ν•  수 μžˆλ‹€.
    • λΈŒλΌμš°μ €λ₯Ό 톡해 ν˜„μž¬ λ³΄λŠ” μ›Ή νŽ˜μ΄μ§€λ₯Ό λ³€κ²½ ν•  수 μžˆλ‹€
  • HTML νƒœκ·Έμ˜ 속성 을 λ³€κ²½
  • HTML μ»¨ν…μΈ μ˜ μŠ€νƒ€μΌμ„ λ³€κ²½ ( CSS )
  • μ‚¬μš©μž μƒν˜Έμž‘μš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„± ( 이벀트 λͺ¨λΈ )
  • λΈŒλΌμš°μ €μ˜ 도움 없이 μ„œλ²„μ™€ 데이터 톡신 ν•  μˆ˜μžˆλ”° ( aJax)

πŸ”Ή 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄

+ ν”„λ‘œν†  νƒ€μž…κΈ°λ°˜ 객체지ν–₯ μ–Έμ–΄ : JS
+ 클래슀 기반 객체지ν–₯ μ–Έμ–΄ : Java
  • 동적 데이터 νƒ€μž…μ„ 지원 ν•œλ‹€
  • μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν•¨μˆ˜λŠ” 1κΈ‰ μ‹œλ―Ό (FirstClasss) - ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— λ‹΄μ•„μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€

πŸ”Ή ν”„λ‘œκ·Έλž¨ μž‘μ„±

  • 슀크립트 νƒœκ·Έ λ‚΄μ—μ„œ μž‘μ„±
<script>
    console.log('hello JavaScript');
</script>
  • λ³„λ„μ˜ μžλ°” 슀크립트 νŒŒμΌμ„ μ‚¬μš© ( λ³„λ„μ˜ app.js 파일 μž‘μ„±)
console.log("μ•ˆλ…•!");
  • script νƒœκ·Έλ‘œ μ›Ή λ¬Έμ„œμ— ν¬ν•¨μ‹œν‚¨λ‹€
<script type="text/javascript" src="app.js"></script>

 


πŸ”Ή κΈ°λ³Έ 문법

λ³€μˆ˜ 생성과 μ΄ˆκΈ°ν™”

πŸ“Œ μ •μˆ˜ νƒ€μž…μ€ number

πŸ“Œ λ¬Έμžμ—΄ String " " , ' ' λ‘˜λ‹€ μ‚¬μš© κ°€λŠ₯

πŸ“Œ 배열은 Object - μˆœμ„œ μžˆλŠ” μš”μ†Œμ˜ 집합

πŸ“Œ 객체 { } - μˆœμ„œ μ—†λŠ” key 와 value의 집합

// λ³€μˆ˜ 생성
let a;                    // λ³€μˆ˜ a의 νƒ€μž…μ€ undefined
                          // λ³€μˆ˜ a에 μ €μž₯된 값은 undefined

// λ³€μˆ˜ μ΄ˆκΈ°ν™”
let a = 10;      // a 에 μ €μž₯된 값은 10
typeof (a);       // λ³€μˆ˜ a 의 νƒ€μž…μ€ number

a = "ν—Œμ›";
typeof (a);      // String


a = true
typeof (a);  // boolean

a = []  // λ°°μ—΄ 
typeof (a);  // Object

let x = {}  // 객체
let x = {    // Object
    name: "ν•œ",        // key:value
    kor: 80,
    eng: 90,
    math: 30,
    age: 30,
    getTotal: function () {
        return this.kor + this.eng + this.math;
    },
    getAverage: function () {
        return this.getTotal() / 3;
    }
};

βš™ 2차원 λ°°μ—΄

let x = [
    ['년도', 'λ§€μΆœμ•‘'],
    [2021, 1000000, 'red'],
    [2022, 1000000, 'blue'],
    [2023, 1000000, 'yellow']
];

πŸ”§ λ°±ν‹± ( ` )

let x;
x = `
      ν…ŒμŠ€νŠΈ 
      ν…ŒμŠ€νŒ… 
      Test
      Taste
      ν‚€λ³΄λ“œ 1번 μ™Όμͺ½μ— μœ„μΉ˜ν•œ λ°±ν‹± 
      μ—¬λŸ¬μ€„μ΄ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€
      `
let firstName = "ν•œ"
let lastName = "κΈ°μ„ "
let sumName = "μ•ˆλ…•ν•˜μ„Έμš” ? " + firstName + "" + lastName + "μž…λ‹ˆλ‹€";
console.log(sumName) //  μ•ˆλ…•ν•˜μ„Έμš” ? ν•œκΈ°μ„ μž…λ‹ˆλ‹€

// λ°±ν‹± μ‚¬μš©
let c = `μ•ˆλ…•ν•˜μ„Έμš” ? ${firstName}${lastName} μž…λ‹ˆλ‹€`
console.log(c) //  μ•ˆλ…•ν•˜μ„Έμš” ? λ°˜κ°‘μŠ΅λ‹ˆλ‹€ ν•œκΈ°μ„  μž…λ‹ˆλ‹€

let salary = 2000000
let x = `κΈ‰μ—¬λŠ” ${salary} 이고 , 연봉은 ${salary * 12} μž…λ‹ˆλ‹€`
// κΈ‰μ—¬λŠ” 2000000 이고 , 연봉은 24000000 μž…λ‹ˆλ‹€

πŸ”¨ ν•¨μˆ˜

function fn(x, y) {
    μˆ˜ν–‰λ¬Έ; // λͺ¨λ“  λ³€μˆ˜κ°€ let 이기에 λ°˜ν™˜ νƒ€μž…μ΄ μ—†λ‹€ 
    μˆ˜ν–‰λ¬Έ;
}

let fn = function (x, y) {
    μˆ˜ν–‰λ¬Έ;
    μˆ˜ν–‰λ¬Έ;
}

let fn = (x, y) => {
    μˆ˜ν–‰λ¬Έ;
    μˆ˜ν–‰λ¬Έ;
}

 

❗ Java 와 JavaScript 의 객체 차이

  • 클래슀 내에 μžˆλ‹€λ©΄ λ©”μ„œλ“œ method , κ·Έμ™ΈλŠ” ν•¨μˆ˜ function
  • JavaScript λŠ” 객체의 value 에 ν•¨μˆ˜ , μˆ«μžν˜• , λ¬Έμžμ—΄ μ €μž₯이 κ°€λŠ₯ν•˜λ‹€
function sum() {
    return "Function Sum";
}

let x = {
    name: 10,
    ft: sum
};

 

 

Java와 JavaScript μ‚¬μš©λͺ©μ 

 

Java JavaScript
ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­ 처리  μ‚¬μš©μžμ™€μ˜  μƒν˜Έ μž‘μš©
μš”μ²­ νŒŒλΌλ―Έν„° κ°’ 쑰회 및 객체에 λ‹΄κΈ° 폼 μž…λ ₯κ°’ μœ νš¨μ„± 체크
μ—…λ¬΄λ‘œμ§  μ‹€ν–‰ 이벀트 처리
DB μ—‘μ„ΈμŠ€ μž‘μ—… μ‹€ν–‰ HTML μ‘°μž‘
응닡 컨텐츠 제곡 μ—˜λ¦¬λ¨ΌνŠΈ 선택 ,  컨텐츠/κ°’ 쑰회 , 컨텐츠/κ°’ λ³€κ²½ , μŠ€νƒ€μΌ λ³€κ²½

πŸ”Ή μ—°μ‚°μž

'10κ°€λ‚˜λ‹€' / 2
// μ—°μ‚°μ˜ 결과둜 NaN 이 좜λ ₯λœλ‹€  Not a Number
// NaN은 μˆ«μžκ°€ μ•„λ‹ˆκ±°λ‚˜ 숫자둜 λ³€ν™˜ν•  수 μ—†λŠ” 값이 μ°Έμ—¬ν•œ μ‚°μˆ μ—°μ‚°μ˜ κ²°κ³Ό

 

πŸ“— λ‚΄μž₯ν•¨μˆ˜ Parse

  • ParseInt
  • ParseFloat
'20' - 2      // 18
'20' * '2'   // 40
'20' / 2       // 10
'20' % 2      // 


parseInt('1234')    //1234
parseInt('1234.23') //1234
parseFloat('1234.53') // 1234.111153

 

πŸ“• μ‚°μˆ  μ—°μ‚°μž + - * / %

5 / 2  // => 2.5

'20' + 2  // =>'202'

 

πŸ“˜ λŒ€μž… μ—°μ‚°μž

+  +=  -+   *=  /=   %=

 

πŸ“™ μ¦κ°μ—°μ‚°μž

++ , --

πŸ“’ 비ꡐ μ—°μ‚°μž

> >=  <= < == === != <>

=== : νƒ€μž…μ΄ κ°™κ³  , 값도 κ°™μ•„μ•Ό true

== : 값이 μΌμΉ˜ν•˜κ±°λ‚˜ , λ°˜ν™˜λœ 값이 μΌμΉ˜ν•˜λ©΄ true

!= : 값이 μΌμΉ˜ν•˜μ§€ μ•Šκ±°λ‚˜, λ³€ν™˜λœ 값이 μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ true

!== : 값이 μΌμΉ˜ν•˜μ§€ μ•Šκ±°λ‚˜, νƒ€μž…μ΄ λ‹€λ₯΄λ©΄ true

 

πŸ“˜ 논리 μ—°μ‚°μž && , || , !

  • JavaScriptκ°€ false둜 μƒκ°ν•˜λŠ” κ°’
    • !!0
    • !!'' 길이가 1인 λ¬Έμžμ—΄
    • !!undefined
    • !!NaN
    • !!null
    • false
  • JavaScriptκ°€ true둜 μƒκ°ν•˜λŠ” κ°’
    • μœ„μ˜ 값을 μ œνšŒν•œ λͺ¨λ“  κ°’ , true
let id = '';

if (id) {   // if 문의 쑰건식 뢀뢄은 true / false
    // νΌμž…λ ₯ κ°’ 제좜
} else {
    alert("아이디λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”")
}



function annualSalary(salary, comm) {
    let total = salary * 12 + salary * comm * 12;
    return total;
}

annualSalary(2000000, 0.3)       // 31200000
annualSalary(2000000, null)      // 24000000
annualSalary(2000000)           // NaN

function annualSalary(salary, comm) {
    // comm -> undefinded μΌμ‹œ default κ°’μœΌλ‘œ 0 μ„μ€Œ
    // μ’Œν•­μ˜ 값이 null ν˜Ήμ€ undefindedμΌμ‹œ μš°ν•­μ˜ 값을 μ—°μ‚°κ²°κ³Όκ°€ λœλ‹€
    // comm 을 전달받지 λͺ»ν•˜κ±°λ‚˜ null 일  μš°ν•­μ˜ 값인 0 을 μ‚¬μš©ν•œλ‹€
    comm = comm || 0;
    let total = salary * 12 + salary * comm * 12;
    return total;
}

annualSalary(2000000)           // 2000000

논리 μ—°μ‚°μžλŠ” μ’Œν•­μ˜ 값이 true둜 νŒμ •λ˜λ©΄ μ’Œν•­μ˜ 값이 μ—°μ‚° μ΅œμ’…κ²°κ³Όκ°€ λœλ‹€

λ…Όλ¦¬μ—°μ‚°μžλŠ” μ’Œν•­μ˜ 값이 false둜 νŒμ •λ˜λ©΄ μš°ν•­μ˜ 값이 μ—°μ‚° μ΅œμ’…κ²°κ³Όκ°€ λœλ‹€

 

  • && μ—°μ‚°μžλŠ” μ’Œν•­μ΄ false 둜 νŒμ •λ˜λ©΄ μ΅œμ’… κ²°κ³Ό 값은 μ’Œν•­μ˜ κ°’
100 && 10  // -> μ΅œμ’…κ²°κ³Ό κ°’10 , 100은 false , 10이 true
  • || μ—°μ‚°μžλŠ” μ’Œν•­μ΄ true둜 νŒμ •λ˜λ©΄ μ΅œμ’…κ²°κ³Όκ°€ μ’Œν•­μ˜ 값이닀
100 || 10 // -> μ΅œμ’…κ²°κ³Ό κ°’ 10 , 100이 true 10이 false

<div class="container">
    <div class="row">
        <div class="col-9">
            <form>
                <!--                μ²΄ν¬λ°•μŠ€μ˜ μƒνƒœκ°€ 변경될 λ•Œ λ§ˆλ‹€   checkBoxClick()ν•¨μˆ˜κ°€ μ‹€ν–‰            -->
                <input type="checkbox" name="skill" value="java" onchange="checkBoxClick()">μžλ°”
                <input type="checkbox" name="skill" value="rust" onchange="checkBoxClick()">러슀트
                <input type="checkbox" name="skill" value="python" onchange="checkBoxClick()">파이썬
                <!--                    μ €μž₯λ²„νŠΌμ„ 클릭할 λ•Œ λ§ˆλ‹€ saveClick()ν•¨μˆ˜ μ‹€ν–‰-->
                <button type="button" onclick="saveClick()">μ €μž₯</button>
            </form>
        </div>
        <div class="col-3">
            html νƒœκ·Έ
        </div>
    </div>
</div>
<script>
    // μ›Ή νŽ˜μ΄μ§€κ°€ λ‘œλ”©λ  λ•Œ λ°”λ‘œ μ‹€ν–‰ν•  μž‘μ—…
    μˆ˜ν–‰λ¬Έ;
    μˆ˜ν–‰λ¬Έ;
    μˆ˜ν–‰λ¬Έ;

    // μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš© ν•˜λŠ” μž‘μ—…
    // μ €μž₯λ²„νŠΌ ν΄λ¦­μ‹œ μ‹€ν–‰ν•  μž‘μ—…μ΄ κ΅¬ν˜„λœ ν•¨μˆ˜
    function saveClick() {
        μˆ˜ν–‰λ¬Έ;
        μˆ˜ν–‰λ¬Έ;
    }

    // μ²΄ν¬λ°•μŠ€ 체크 ,ν•΄μ œμ‹œ μ‹€ν–‰ν•  μž‘μ—…μ΄ κ΅¬ν˜„λœ ν•¨μˆ˜
    function checkBoxClick() {
        μˆ˜ν–‰λ¬Έ;
    }
</script>

πŸ”Ή JavaScript ν•¨μˆ˜

μ •μ˜

function ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜, λ§€κ°œλ³€μˆ˜) {
    μˆ˜ν–‰λ¬Έ;
    μˆ˜ν–‰λ¬Έ;
}
  • function ν‚€μ›Œλ“œλŠ” ν•¨μˆ˜λ₯Ό μ •μ˜ ν•  λ•Œ μ‚¬μš©ν•˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μ˜ˆμ•½μ–΄
  • μžλ°”μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜λŠ” λ°˜ν™˜ νƒ€μž…μ΄ μ—†λ‹€ (죄닀 let μž„)
  • μžλ°”μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λŠ” λ§€κ°œλ³€μˆ˜ νƒ€μž…μ΄ μ—†λ‹€
  • μžλ°”μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜λŠ” return 문을 μ‚¬μš©ν•΄ 값을 λ°˜ν™˜ν•  수 μžˆλ‹€
  • λ°˜ν™˜κ°’μ€ "숫자, λ¬Έμžμ—΄,boolean, 객체 , λ°°μ—΄ , λ‹€λ₯Έ ν•¨μˆ˜" κ°€ κ°€λŠ₯ν•˜λ‹€
  • return 문이 μ—†λŠ” ν•¨μˆ˜λŠ” 항상 undefindedλ₯Ό λ°˜ν™˜ν•œλ‹€


  • 이름 μ—†λŠ” 읡λͺ…ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜κ³  κ·Έ ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— λŒ€μž„
let λ³€μˆ˜λͺ… = function (λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2) {
    μˆ˜ν–‰λ¬Έ;
    μˆ˜ν–‰λ¬Έ;
    return λ°˜ν™˜κ°’;
}
  • λ³€μˆ˜μ— λŒ€μž…λœ ν•¨μˆ˜ μ‹€ν–‰
λ³€μˆ˜λͺ…();
728x90

'Language > JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

03. DOM  (0) 2024.01.15
02. 이벀트  (1) 2024.01.12
pre-training JavaScript (9)  (1) 2023.10.20
pre-training JavaScript (8) ν•¨μˆ˜ , 객체  (1) 2023.10.19
pre-training JavaScript (7) ν•¨μˆ˜  (1) 2023.10.18