관리 메뉴

gi_dor

pre-training JavaScript (2) λ³Έλ¬Έ

Language/JavaScript

pre-training JavaScript (2)

기돌 2023. 10. 11. 09:26
728x90


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



 1. Java Scriptμ—μ„œ λ³€μˆ˜ λ§Œλ“€κΈ°

1 ) μ˜ˆμ•½μ–΄

β‘  var - ꡬ 버전
β‘‘ let 

차이 ?  
λ³€μˆ˜μ˜ λ²”μœ„ (scope) - 좔후에 μ„€λͺ… ν•œλ‹€κ³  ν•˜μ‹¬
let num;
// num 이 λ³€μˆ˜ λͺ… , (μ €μž₯μ†Œμ˜ 이름)
num = 100;  
// λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” (λ³€μˆ˜μ— 졜초의 값을 λŒ€μž…ν•  λ•Œ μš°λ¦¬λŠ” 이것을 λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” 라고 ν•œλ‹€)
// ' = ' λ“±ν˜Έ ν‘œμ‹œλŠ” , λŒ€μž…μ—°μ‚°μžλ₯Ό λœ»ν•˜κ³  μš°ν•­μ— μžˆλŠ” 값을 μ’Œν•­μœΌλ‘œ λŒ€μž…ν•œλ‹€.

2 ) λ³€μˆ˜ (μ €μž₯μ†Œ)에 λŒ€ν•œ λ³€κ²½
      λ³€μˆ˜λͺ… = κ°’;

3 ) λ³€μˆ˜μ— λŒ€ν•œ 쑰회 (μ‚¬μš©)
      값을 λŒ€μž…ν•˜μ§€ μ•Šκ³  μ‚¬μš©  

console.log(λ³€μˆ˜λͺ…)

2. μ˜ˆμ•½μ–΄μ™€ μ‹λ³„μž

μ‹λ³„μž
λ‹€λ₯Έκ²ƒκ³Ό κ΅¬λ³„ν•˜κΈ° μœ„ν•΄ μ •ν•˜λŠ” κ³ μœ ν•œ μ΄λ¦„
β–Ά λ³€μˆ˜ λͺ… , ν•¨μˆ˜ λͺ… 
• 영문자 (λŒ€ μ†Œλ¬Έμž) ,  숫자 , $ , _
• μˆ«μžλ‘œλŠ” μ‹œμž‘ν• μˆ˜ μ—†λ‹€. 
μ˜ˆμ•½μ–΄ μ‚¬μš© λΆˆκ°€
μ•”λ¬΅μ μœΌλ‘œ μ‹λ³„μžλŠ” μ†Œλ¬Έμžλ‘œ μ‹œμž‘ν•œλ‹€
λ‘λ²ˆμ§Έ 단어 λΆ€ν„° 첫번째 κΈ€μžλ₯Ό λŒ€λ¬Έμžλ₯Ό μ‚¬μš©ν•œλ‹€

// camel case
// Java , JavaScript에 주둜 쓰인닀고함
let studentNumber;
let priceDiscountRate;

// snake case
// C 에 주둜 쓰인닀고 함
let student_number;
let price_discount_number;


μ˜ˆμ•½μ–΄  - let , var
ν•΄λ‹Ή ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ νŠΉλ³„ν•œ λͺ©μ μœΌλ‘œ μ‚¬μš©λ˜λ„둝 μ΄λ―Έ μ •ν•΄μ Έ μžˆλŠ” ν‚€μ›Œλ“œ


3. λ³€ν•˜μ§€ μ•ŠλŠ” κ°’ μƒμˆ˜(constant)

let pi = 3.14;

pi λΌλŠ” λ³€μˆ˜κ°€ μžˆλ‹€
3.14λΌλŠ” 값이 μ ˆλŒ€ λ³€ν•˜μ§€ μ•ŠλŠ” 값이라고 ν‘œκΈ° ν•˜κ³ μ‹Άμ„ λ•Œ

let pi μ—μ„œ const λ₯Ό μ‚¬μš©ν•΄ μƒμˆ˜ ( λ³€ν•˜μ§€ μ•ŠλŠ” 수, 항상 μ„±λ¦½ν•˜λŠ” 수 ) λ₯Ό μ €μž₯ν•˜λŠ” μ €μž₯μ†Œ

const PI = 3.14;

 • μƒμˆ˜λͺ…은 ν•­μ‹œ λŒ€λ¬Έμžλ₯Ό μ‚¬μš©ν•˜μž


 

ν”„λ‘œκ·Έλž¨ μš”λ¦¬ λ ˆμ‹œν”Ό
λ³€μˆ˜μ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™”
- ν”„λ‘œκ·Έλž¨ 싀행에 ν•„μš”ν•œ κ°’μ˜ μ’…λ₯˜μ™€ μ„±μ§ˆμ„ νŒŒμ•…

μš”λ¦¬μž¬λ£Œμ˜ μ€€λΉ„
λ³€μˆ˜μ— μ €μž₯된 값을 ν™œμš©
- μƒˆλ‘œμš΄ 값을 생산
- λ³€μˆ˜μ˜ 값을 가곡
재료λ₯Ό ν™œμš©ν•΄ μ‘°λ¦¬ν•˜κΈ°
μ΅œμ’… κ²°κ³Όλ₯Ό λ°μ΄ν„°λ‘œ μƒμ„±ν•˜κ³  좜λ ₯ μš”λ¦¬λ₯Ό μ™„μ„±

 


4. JavaScript의 μ—°μ‚°μž

값을 κ°€κ³΅ν•˜λŠ” μž‘μ—…μ— μ‚¬μš©
β‘  μ‚°μˆ  μ—°μ‚°μž

β–Ά μ‚°μˆ  연산을 ν•  λ•Œ μ—λŠ” λ³€μˆ˜κ°€ κΌ­ μ΄ˆκΈ°ν™” λ˜μ–΄ μžˆμ–΄μ•Ό NaN이 λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.

λ§μ…ˆ +
λΊ„μ…ˆ -
κ³±μ…ˆ *
λ‚˜λˆ—μ…ˆ /
λ‚˜λ¨Έμ§€ %
-  , * ,  / ,  %  ' λŠ” 숫자 μ—°μ‚°λ§Œ κ°€λŠ₯ν•˜λ―€λ‘œ "1" 을 숫자 1둜 μ·¨κΈ‰ν•΄μ„œ 연산함
μ’Œν•­μ΄λ‚˜ μš°ν•­μ— μˆ«μžκ°€ μ•„λ‹Œ 값이 μžˆμ–΄λ„ ν•΄λ‹Ή 연산을 μ‹€ν–‰ν•œλ‹€
ν•΄λ‹Ή 연산을 μ‹€ν–‰ν•˜κΈ° 전에 μˆ«μžκ°€ μ•„λ‹Œ 값은 숫자둜 λ³€ν™˜ν•œλ‹€
이것을 ' ν˜•λ³€ν™˜ ' 이라고 ν•œλ‹€.

' + ' λŠ” λ¬Έμžμ—΄λ‘œ λ§Œλ“€μ–΄ 버린닀. 
// μ‚°μˆ  μ—°μ‚°μž
let num1 = 10;
let num2 = 20;

// λ§μ…ˆ μ—°μ‚°μž
// 숫자 + 숫자 -> λ§μ…ˆ μ—°μ‚°μžλ‘œ λ™μž‘
let result1 = num1 +  num2;
console.log('κ²°κ³Ό :',result1);

// 문자 + 문자 -> λ¬Έμžμ—΄ μ—°κ²°ν•˜κΈ°λ‘œ λ™μž‘
// 문자 + 숫자 -> λ¬Έμžμ—΄ μ—°κ²°ν•˜κΈ°λ‘œ λ™μž‘
// 숫자 + 문자 -> λ¬Έμžμ—΄ μ—°κ²°ν•˜κΈ°λ‘œ λ™μž‘
console.log("a" + "b")
console.log("a" + 123)
console.log(123 + "abc")

console.log(2 + 2 + "ab")
console.log(2 + 2 + "a" + 2 + 2) // 4 + "a" => "4a"(λ¬Έμžμ—΄) , "4a"+2 => "4a2"(λ¬Έμžμ—΄) "4a2"+2 => "4a22"
console.log("a" + 2 + 2)
console.log(2 + "a" + 2)

console.log("1" + 2) 

// ' - * / % ' λŠ” 숫자 μ—°μ‚°λ§Œ κ°€λŠ₯ν•˜λ―€λ‘œ "1" 을 숫자 1둜 μ·¨κΈ‰ν•΄μ„œ 연산함 
// μ’Œν•­μ΄λ‚˜ μš°ν•­μ— μˆ«μžκ°€ μ•„λ‹Œ 값이 μžˆμ–΄λ„
// ν•΄λ‹Ή 연산을 μ‹€ν–‰ν•œλ‹€
// ν•΄λ‹Ή 연산을 μ‹€ν–‰ν•˜κΈ° 전에 μˆ«μžκ°€ μ•„λ‹Œ 값은
// 숫자둜 λ³€ν™˜ν•œλ‹€
console.log("1" - 2)
console.log("2" * 2)
console.log("100" / 2)
console.log ("7" % 4)

// 숫자둜 λ³€ν™˜ ν• μˆ˜ μ—†μ–΄ NaN 둜 λ‚˜μ˜€λŠ”λ° Not a Number λΌλŠ” μ˜ˆμ•½μ–΄
// μˆ«μžκ°€ μ•„λ‹Œ κ°’μœΌλ‘œ μ—°μ‚°μ‹œ μ—°μ‚°κ²°κ³Όλ‘œ NaN이 좜λ ₯μ΄λœλ‹€.
console.log("a" - 1)
console.log("C" * 2)
console.log("κ°€λ‚˜λ‹€λΌ" - 10)
console.log("10abc" * 2)

μˆ«μžκ°€ μ•„λ‹Œ κ°’μœΌλ‘œ μ—°μ‚°μ‹œ μ—°μ‚°κ²°κ³Όλ‘œ NaN이 좜λ ₯이 λœκ²ƒμ„ 볼수 μžˆλŠ”λ°
숫자둜 λ³€ν™˜ ν• μˆ˜ μ—†μ–΄ NaN λ‘œ λ‚˜μ˜€λŠ”데 Not a Number λΌλŠ” μ˜ˆμ•½μ–΄

 

첫번째 좜λ ₯에 0.30000000000004 μ΄λ ‡κ²Œ 좜λ ₯된 것을 확인 ν• μˆ˜ μžˆλ‹€
ν”„λ‘œκ·Έλž¨μ—μ„œ μ‹€μˆ˜λ₯Ό μ €μž₯ ν•  λ•Œ μ—λŠ” ν•΄λ‹Ή μ‹€μˆ˜ 값에 κ·Όμ‚¬ν•œ κ°’μœΌλ‘œ μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€

이둜 인해 ν•΄κ²°μ±…μœΌλ‘œ 
μ†Œμˆ˜μ μ΄ μ—†μ„μˆ˜ μžˆμ„ 만큼의 10의 배수λ₯Ό κ³±ν•˜μž (10 , 100 , 1000 , 10000 , 100000 λ“±λ“±)
κ·Έν›„ λ‹€μ‹œ 계산결과λ₯Ό 10의 배수둜 λ‚˜λˆˆλ‹€


β‘‘ λŒ€μž… μ—°μ‚°μž

1 ) =

// μ •μˆ˜ 100을 num1 λ³€μˆ˜μ— λŒ€μž…ν•˜λΌ
let num1 = 100;

2 ) += , -= , *= , /= ,%=

let num1 = 10;
num1 = num1 + 5;
num1 = num1 + 5;
num1 = num1 + 5;
console.log(num1);

 

 

β–Ά let totalScore = 0; 으둜 μ΄ˆκΈ°ν™” μ—μ„œ
     μ΄ˆκΈ°ν™” ν•˜μ§€ μ•Šκ³  let totalScore; μ„  μ–Έλ§Œ ν•œλ‹€λ©΄  ?

NaN μ΄λΌλŠ” κ²°κ³Όλ₯Ό μ•Œμˆ˜ μžˆλ‹€

totalScore에 숫자둜 값이 μ—†κ³  undefined 둜 값이 λ“€μ–΄ 있기 λ•Œλ¬Έμ΄λ‹€
λ³€μˆ˜λ₯Ό μ„ μ–Έλ§Œ ν•˜κ³  μ΄ˆκΈ°ν™” ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ 기본적으둜 undefined λΌλŠ” 값이 λ“€μ–΄ μžˆλ‹€.

undefined λŠ” μ΄ˆκΈ°ν™” λ˜μ§€ μ•ŠλŠ” λ³€μˆ˜κ°€ κ°€μ§€λŠ” κΈ°λ³Έ 값이닀.

totalScoreμ˜κ°’μ΄ undefined 이기에  undefined + 점수 연산이 μ‹€ν–‰λœλ‹€.

undefined λŠ” 문자 데이터가 μ•„λ‹ˆλ―€λ‘œ κ°’ 이어 뢙이기 λŒ€μ‹  λ§μ…ˆ 연산이 μ‹€ν–‰λ˜λŠ”λ° 
λ§μ…ˆ 연산은 숫자 + 숫자의 μ—°μ‚° μ΄λ―€λ‘œ undefinedλ₯Ό 숫자둜 λ³€ν™˜ν•˜κ²Œ λ˜λŠ”λ° 

undefinedλŠ” NaN으둜 λ³€ν™˜λœλ‹€.

 

 

β‘’ 증감 μ—°μ‚°μž

1 ) ++  : λ³€μˆ˜μ˜ 값을 1증가

let num = 5;
num++; // numλ³€μˆ˜μ˜ 값이 1증가 λœλ‹€.
++num; // num λ³€μˆ˜μ˜ 값이 1증가 ν•œλ‹€.
console.log(num);

let a = ++num // a = 6 , num = 6

let b = num++ // b = 5 , num = 6
let num = 0;
// 3κ°œκ°€ 같은 의미λ₯Ό κ°€μ‘Œλ‹€.
num = num + 1;
num += 1;
num ++;
let num1 = 5;

num1++; // λ³€μˆ˜μ— μ €μž₯된 값을 1증가
console.log(num1);

++num1; // λ³€μˆ˜μ— μ €μž₯된 값을 1증가
console.log(num1)


let num2 = 5;
let a = ++num2; // num의 값이 1증가후 a에 λŒ€μž…
console.log('a :', a) // 6
console.log('num2 :', num2) // 6

let num3 = 5;
let b = num3++ // λ‹¨λ…μœΌλ‘œ μ‚¬μš©ν•˜μ§€ μ•ŠκΈ°μ— b λŒ€μž…ν›„ 증가 됨
console.log('b :', b) // 5 
console.log('num3 :',num3) // 6

let num4 = 5;
num4++; // λ‹¨λ…μœΌλ‘œ μ‚¬μš©ν•˜κΈ°μ— 이미 μ¦κ°€ν–ˆμŒ.
let c = num4;
console.log('c :', c)
console.log('num4 :', num4)

let num5 = 5;
++num5;
let d = num5;
console.log('d :', d)
console.log('num5 :' , num5)


2 ) -- : λ³€μˆ˜μ˜ 값을 1κ°μ†Œ


 

728x90