JS λ³€μˆ˜(1)

Taehee KimΒ·2022λ…„ 4μ›” 28일
0

JavaScript

λͺ©λ‘ 보기
2/17
post-thumbnail

πŸ“Œ λ³€μˆ˜

λ³€μˆ˜λž€? λ³€ν•  수 μžˆλŠ” 정보λ₯Ό 의미, λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  ν• λ‹Ήν•œλ‹€κ³  말할 수 μžˆλ‹€. 그리고 μ§€μ •λœ 값을 계속 λ³€κ²½ν•  수 μžˆλ‹€.

ex) var νƒœν¬ = 26;

πŸ“Œ λ³€μˆ˜λͺ… μ •ν•˜κΈ°

  • 곡백, 특수문자, ꡬ두점(. , ? λ“±λ“±) μ‚¬μš© λΆˆκ°€λŠ₯
  • $, _ λŠ” 상황에 맞게 μ‚¬μš© κ°€λŠ₯
  • μ˜ˆμ•½μ–΄ κΈˆμ§€ - 이미 jsμ—μ„œ μ“°κ³  μžˆλŠ” 단어듀 ex) console
  • λŒ€μ†Œλ¬Έμž ꡬ뢄
  • μœ λ‹ˆμ½”λ“œ λ¬Έμžμ™€ 이λͺ¨μ§€(일뢀) λͺ¨λ‘ μ‚¬μš©κ°€λŠ₯ν•˜λ‚˜ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것을 지ν–₯

βœ” varλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λ‚˜?

  • scope(λ²”μœ„)λ₯Ό 배우기 전에 μ—°μŠ΅ν•˜λŠ” λ™μ•ˆ varλ₯Ό μ’€ μ“°λ‹€κ°€ λ‚˜μ€‘μ—λŠ” μ ˆλŒ€ 쓰지 μ•ŠκΈ°!
  • scopeμ—λŠ” μ „μ—­κ³Ό 지역이 μžˆλ‹€.
    1) μ „μ—­: μ–΄λ–€ κ³³μ—μ„œλ„ μ—΄λ € μžˆλŠ” 곡간, μ ‘κ·Ό κ°€λŠ₯! ν•˜μ§€λ§Œ ν˜‘μ—…μ— λΆˆνŽΈν•˜κ³  μ˜€ν•΄κ°€ 생기기 쉽기 λ•Œλ¬Έμ— νŠΉμˆ˜ν•œ 경우만 씀
    2) 지역: λ²”μœ„κ°€ ν•œμ •λ˜μ–΄ λ³€μˆ˜κ°€ 생쑴
  • var λŠ” μƒλž΅ κ°€λŠ₯ν•˜μ§€λ§Œ 전역이 되기 떄문에 κΌ­ λΆ™μ—¬μ“°μž!

βœ” λ³€μˆ˜ μ„ μ–Έ

var a;
var my_name;

βœ” λ³€μˆ˜ ν• λ‹Ή

=은 κ°™λ‹€κ°€ μ•„λ‹Œ ν• λ‹Ή μ—°μ‚°μž(λ°˜ν™˜ν•œλ‹€)
a = 1;
my_name ="Taehee";

βœ” μ£Όμ†Œμ°½μ— about:blank --> κΉ¨λ—ν•œ 빈 ν™”λ©΄μœΌλ‘œ μ½˜μ†”μ°½ μ—΄κ³  μ—°μŠ΅ν•  수 μžˆλ‹€.

βœ” console.log();

μ €μž₯μ†Œ.property(데이터)

  • console : μ €μž₯μ†Œ, κ°μ²΄μž„!
  • logλΌλŠ” propery인 ν•¨μˆ˜

πŸ“Œ 인터프리터 μ–Έμ–΄ vs 컴파일 μ–Έμ–΄

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 인터프리티어 언어에 ν•΄λ‹Ήλœλ‹€.

  • κΈ°κ³„μ–΄λ‘œ 이뀄진 컴파일일러 μ–Έμ–΄κ°€ 속도가 더 λΉ λ₯΄λ‹€. cpuκ°€ λΉ λ₯΄κ²Œ 해석할 수 있기 λ•Œλ¬Έμ΄λ©°, 미리 μ†ŒμŠ€μ½”λ“œμ™€ μ»΄νŒŒμΌλŸ¬κ°€ μ€€λΉ„λœ μƒνƒœλ‘œ μ‹œμž‘ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. (μ˜ˆμ‹œ: .exe)
  • 인터프리터 μ–Έμ–΄μ˜ μž₯점
    1. λ°”λ‘œ 싀행이 κ°€λŠ₯ β†’ λ³„λ„μ˜ μ‹€ν–‰ 파일이 X
    2. μ»΄νŒŒμΌκ³Όμ • μ—†μ–΄μ„œ μˆ˜μ •, 디버깅 그리고 κ°œλ°œμ†λ„μ— 유리
    3. ν”Œλž«νΌμ— 독립적이닀.

πŸ“Œ μ›μ‹œν˜• 자료 vs κ°μ²΄ν˜• 자료(아직 λ°°μš°μ§€ μ•ŠμŒ, μΆ”ν›„ μΆ”κ°€)

1. μ›μ‹œ νƒ‘μž…

객체λ₯Ό μ œμ™Έν•œ λͺ¨λ“  νƒ€μž…μ€ λΆˆλ³€ κ°’(λ³€κ²½ν•  수 μ—†λŠ” κ°’)을 μ •μ˜ν•©λ‹ˆλ‹€.

βœ” String, Number, Boolean, Symball, Undefined, Null

  • null 개발자의 μ‹€μˆ˜(μ˜ˆμ™Έμ²˜λ¦¬μ—μ„œ 쏙 뺴먹음)
    null은 μ›μ‹œμžλ£Œν˜•μΈλ° μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό 잘 λͺ»ν•΄μ„œ νƒ€μž…μ„ 였브젝트둜 μ²˜λ¦¬ν•΄λ²„λ¦Ό (μ˜ˆμ™Έμ²˜λ¦¬μž˜λͺ»ν•¨)
  • μ˜€λΈŒμ νŠΈλŠ” 객체
  • literal(λ¬Έμžκ·ΈλŒ€λ‘œ) ν‘œν˜„ --> 숫자 νƒ€μž…μ„ 숫자둜, 문자 κ·ΈλŒ€λ‘œ μ“°λŠ” 방식
    var num = 10;
  • μ›λž˜ λ¦¬ν„°λŸ΄ ν‘œν˜„μ΄ μ•„λ‹Œ μ›μ‹œμžλ£Œν˜• ν˜•νƒœ
    var num = new Number(1);
  • μ›μ‹œμžλ£Œν˜•μ΄ μ €μž₯된 λ³€μˆ˜λ₯Ό λ‹€λ₯Έ λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ κ°’μžμ²΄κ°€ λ³΅μ‚¬λ˜κ³  λ³΅μ‚¬λœ λ³€μˆ˜λ₯Ό 변경해도 μ›λž˜ λ³€μˆ˜λŠ” λ³€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • ν•œλ²ˆ ν• λ‹Ήλ˜μ–΄ 값을 볡사해가면, κ·Έ ν›„μ—” μžλ™μœΌλ‘œ μ—…λ°μ΄νŠΈκ°€ μ•ˆλœλ‹€κ³  μƒκ°ν•˜λ©΄ 됨.
  • new String('hello') -->
    μƒμ„±μž ν•¨μˆ˜, ν•¨μˆ˜μ˜ 결과물은 instance인 hello

2. 객체 μžλ£Œν˜•

βœ” Object, Null


πŸ‘€ νƒ€μž… μ•Œμ•„λ‚΄λŠ” 두가지 방법(μ½˜μ†”μ°½)

1) Object.prototype.toString.call(데이터).slice(8, -1);

μš°λ¦¬κ°€ λ°›μ•„μ˜¨ 데이터λ₯Ό λ¬Έμžμ—΄λ‘œ λ°”κΎΈλŠ”λ°, λ¬Έμžμ—΄μ˜ 8번째 μΈλ±μŠ€λΆ€ν„°, λ§ˆμ§€λ§‰μ—μ„œ λ‘λ²ˆμ§Έ μΈλ±μŠ€κΉŒμ§€ μž˜λΌλ‚΄κΈ° [object String] μ—μ„œ μ•žκΈ€μž λœμ–΄λ‚΄κΈ°

2)
var str = 'hello';
str.constructor


πŸ“˜ λ³€μˆ˜μ˜ μžλ£Œν˜•

var λ³€μˆ˜ν•˜λ‚˜ = 20;
var λ³€μˆ˜λ‘˜ = 10;
var λ³€μˆ˜μ…‹ = 2;

document.write('λ³€μˆ˜ν•˜λ‚˜ : ', λ³€μˆ˜ν•˜λ‚˜);
document.write('<br>');
document.write('λ³€μˆ˜λ‘˜ : ', λ³€μˆ˜λ‘˜);
document.write('<br>');
document.write('λ³€μˆ˜μ…‹ : ', λ³€μˆ˜μ…‹);
document.write('<br>');
document.write('λ³€μˆ˜ν•˜λ‚˜+λ³€μˆ˜λ‘˜ : ', λ³€μˆ˜ν•˜λ‚˜+λ³€μˆ˜λ‘˜);
document.write('<br>');
document.write('λ³€μˆ˜ν•˜λ‚˜-λ³€μˆ˜λ‘˜ : ', λ³€μˆ˜ν•˜λ‚˜-λ³€μˆ˜λ‘˜);
document.write('<br>');
document.write('λ³€μˆ˜ν•˜λ‚˜/λ³€μˆ˜λ‘˜ : ', λ³€μˆ˜ν•˜λ‚˜/λ³€μˆ˜λ‘˜);
document.write('<br>');
document.write('λ³€μˆ˜ν•˜λ‚˜*λ³€μˆ˜λ‘˜ : ', λ³€μˆ˜ν•˜λ‚˜*λ³€μˆ˜λ‘˜);
document.write('<br>');
document.write('λ³€μˆ˜ν•˜λ‚˜**λ³€μˆ˜μ…‹ : ', λ³€μˆ˜ν•˜λ‚˜**λ³€μˆ˜μ…‹);
document.write('<br>');
document.write('λ³€μˆ˜ν•˜λ‚˜%λ³€μˆ˜μ…‹ : ', λ³€μˆ˜ν•˜λ‚˜%λ³€μˆ˜μ…‹);

βœ” λ³€μˆ˜ μžλ£Œν˜•μ˜ νƒ€μž…μ€ 적어야 ν• κΉŒ?NO! λ³€μˆ˜ μžλ£Œν˜•μ€ λ‹€μ–‘ν•œ νƒ€μž…μ˜ 데이터λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•¨μΈλ°, λ‹€λ₯Έ 언어와 달리 JSμ—μ„œλŠ” λ”°λ‘œ λ³€μˆ˜μ˜ νƒ€μž…μ„ 쓰지 μ•Šμ•„λ„ λœλ‹€!

typeof 'hello world'   // String
typeof 100             // Number
typeof NaN             // Number
typeof true            // Boolean
typeof undefined       // undefined
typeof Symbol()        // Symbol
typeof null            // Object, μ—¬κΈ°μ„œλΆ€ν„° jsκ°€ μ–΄λ €μ›Œ μ§‘λ‹ˆλ‹€.
typeof []              // Object, μ—¬κΈ°μ„œλΆ€ν„° jsκ°€ μ–΄λ €μ›Œ μ§‘λ‹ˆλ‹€. μ™œ Arrayκ°€ μ•„λ‹κΉŒμš”?
typeof {}              // Object
typeof function () {}  // function
typeof /μ •κ·œν‘œν˜„μ‹/gi   // Object

// Object.prototype.toString.call(데이터).slice(8, -1);
// 둜 ν™•μ‹€ν•˜κ²Œ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ λ³€μˆ˜ μžλ£Œν˜• - 문자

const 이름 = 'κΉ€νƒœν¬';
const μ†Œμ† = 'λ©‹μŸμ΄ μ‚¬μžλ“€ FE 2κΈ°';

let μ£Όμ†Œ = '좘천';
μ£Όμ†Œ = 'μ„œμšΈ';

document.write(이름, '<br>');
document.write(μ†Œμ†, '<br>');
document.write(μ£Όμ†Œ, '<br>');
// [] indexλ²ˆν˜ΈλŠ” 0λΆ€ν„° μ‹œμž‘, 띄어쓰기도 λ¬Έμžμ—΄ 포함
document.write(μ†Œμ†[2], '<br>');
document.write(μ†Œμ†[6], '<br>');

(κ²°κ³Ό)

πŸ“Œ λ³€μˆ˜ μžλ£Œν˜• - 숫자

βœ” parseInt(string,radix-μ§„μˆ˜)

  • λ¬Έμžν˜• 숫자
  • μ •μˆ˜ 값을 λ°˜ν™˜ν•˜κΈ° μœ„ν•΄ μ†Œμˆ˜μ  μ΄ν•˜ 값을 μžλ¦„
  • μˆ«μžκ°€ μ•„λ‹Œ 문자λ₯Ό λ§ˆμ£ΌμΉ˜λŠ” 경우 λ¬Έμžμ΄μ „κΉŒμ§€ νŒŒμ‹±, λ¬Έμžμ™€ κ·Έ μ΄ν›„λŠ” λͺ¨λ‘ λ¬΄μ‹œ
  • μ„ ν–‰ 및 ν›„ν–‰ 곡백은 ν—ˆμš©

βœ” λΆ€λ™μ†Œμˆ˜μ 

  • μ‚¬λžŒμ΄ λ³΄κΈ°μ—λŠ” 0.1 + 02 = 0.3이 λ‹Ήμ—°ν•˜κ²Œ 생각될 수 μžˆλ‹€.
  • κ·ΈλŸ¬λ‚˜ μ»΄ν“¨ν„°λŠ” 2μ§„μˆ˜λ‘œ 처리λ₯Ό ν•˜κΈ° λ•Œλ¬Έμ— μ •ν™•ν•˜κ²Œ 0.3이 λ˜λŠ” 것이 μ•„λ‹ˆλ‹€.
  • λͺ¨λ“  μˆ«μžκ°€ λ‹€ λΆ€λ™μ†Œμˆ˜μ μœΌλ‘œ ν‘œν˜„λ˜λŠ” 건 μ•„λ‹ˆκ³ , μΌλΆ€λŠ” 10μ§„μˆ˜μ²˜λŸΌ λ”± λ–¨μ–΄μ§€λŠ” κ²½μš°λ„ μžˆλ‹€.

βœ” Max_SAFE_INTEGER

ν•΄κ²° 방법: BigInt("");


πŸ“Œ μˆ«μžν˜• method

Math.λ©”μ†Œλ“œ(인자)

βœ” randome()을 μ΄μš©ν•˜μ—¬ μ›ν•˜λŠ” 수 λ½‘λŠ” 방법

κ·œμΉ™ 1. Math.floor(Math.random()*9); -->0~8

  • κ³±ν•˜λŠ” μˆ˜λ³΄λ‹€ ν•˜λ‚˜ μž‘μ€ μˆ˜κΉŒμ§€ λ‚˜μ˜€κ²Œλœλ‹€
  • ν•œ 자리수 쀑 랜덀(둜또처럼): Math.floor(Math.random()*10); --> 0~9

κ·œμΉ™ 2. Math.floor(Math.random()*9 + 5); 5~ 13

  • λ²”μœ„ μ •ν•΄μ£ΌκΈ°

πŸ‘€ ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄ λ°±ν‹±??

document.write(n : ${n} <br>);

  • μˆ˜μ •ν•˜κΈ° νŽΈν•˜κ²Œ ν•˜κΈ° μœ„ν•΄μ„œ

document.write(n.toLocaleString() : ${n.toLocaleString()} <br>);

  • μ‰Όν‘œ

document.write(s.replace(/,/g, '') : ${s.replace(/,/g, '')} <br>);

  • μ „μ²΄μ—μ„œ μ‰½ν‘œλ₯Ό μ°Ύμ•„ ""빈문자둜 λ§Œλ“€μ–΄λΌ
  • /,/g --> μ •κ·œν‘œν˜„
  • μ •κ·œ ν‘œν˜„μ΄ μ•„λ‹Œ 것은 맨 처음 문자만 λ°”κΏ”μ€Œ
    console.log(p.replace('dog','monkey')) 이건 μ •κ·œν‘œν˜„ μ•„λ‹˜, 근데
    replaceall λͺ…령을 μ“°λ©΄ μ •κ·œμ‹μ²˜λŸΌ 전체 ν•΄λ‹Ή 문자 λ°”κΏ€ 수 이씀

document.write(parseInt(s, 10) : ${parseInt(s, 10)} <br>);

  • μˆ«μžν˜• 문자
  • parseFloat: μ†Œμˆ˜μ μ²˜λ¦¬
  • λ‘˜ λ‹€ 숫자만 , 숫자문자숫자면 μ•žμ— 숫자만 꺼내짐

document.write(n.toFixed(10) : ${n.toFixed(10)} <br>);
- μ›ν•˜λŠ” μ†Œμˆ«μ  μžλ¦¬κΉŒμ§€λ§Œ 잘라쀌

0개의 λŒ“κΈ€