1. JavaScript
1.1 JavaScript
HTML๊ณผ CSS๋ก ๊ตฌ์ฑ๋ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ์ธ์ด. JS๋ฅผ ์ด์ฉํ๋ฉด ์น ํ์ด์ง๊ฐ ํน์ ์ํฉ(event)์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์๋ํ ์ ์๋๋ก ๋ง๋ค ์ ์๋ค.
JS์ ์์์ ์ ์ ์ธ ์น์ ๋์ ์ผ๋ก ํํํ๊ธฐ ์ํ๊ฒ ์ด์๋ค. ํ์ฌ๋ ์น ๋ธ๋ผ์ฐ์ ์์๋ง ๋์ํ๋ ๋ฐ์ชฝ์ง๋ฆฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์๋, ํ๋ก ํธ์๋ ์์ญ ๊ทธ๋ฆฌ๊ณ ๋ฐฑ์๋ ์์ญ๊น์ง ์๋ฃจ๋ฅด๋ ์น ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ์ค์ผ๋ก ์๋ฆฌ์ก๊ณ ์๋ค.
๋ธ๋ผ์ฐ์ ์ ์์ญ์ด ์๋ ๋ฐฑ์๋ ์์ญ์ Java, Python ๊ทธ๋ฆฌ๊ณ JS(Node.JS)๋ฑ ์ฌ๋ฌ ์ธ์ด๋ก ๊ตฌ์ฑ๋ ์ ์์ง๋ง, ํ๋ก ํธ์๋ ์์ญ์ ์์์ ์ธ๊ธํ ์ธ ๊ฐ์ง ์ธ์ด๋ก ๊ตฌ์ฑ๋๋ค.
1.2. JS ํน์ง
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฑ(Object) ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ์ด๋ฉฐ, ํ์ ์ ๋ช ์ํ ํ์๊ฐ ์๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ด๋ค. ๋ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด ์งํฅํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ชจ๋ ํํํ ์ ์๋ค.
2. JS์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
2.1. ๋ณ์
๊ฐ๋จํ ๋น์ ์ ํจ๊ป ๋ณ์๋ฅผ ์ดํดํด๋ณด์. ํ ๋๋ถ๊ฐ ๋ฐญ์ ์ฌ์ ์จ์์ ์ฌ๋ฌ ์ข ๋ฅ ๊ตฌํด์๊ณ , ์จ์์ ๊ตฌ๋ถํ ๋ ํธ์๋ฅผ ์ํด ๋ฐ๊ตฌ๋ ์ฌ๋ฌ๊ฐ์ ์จ์์ ์ข ๋ฅ๋ณ๋ก ์ด๋ฆํ๋ฅผ ๋ถ์ฌ ๋๋ ๋ด์ผ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
์ด๋, ๋ณ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๋ฐ๊ตฌ๋, ๋ฐ๊ตฌ๋์ ์ด๋ฆํ๋ฅผ ๋ฌ์ ์ฃผ๋ ๊ฒ์ ๋ณ์์ ์ ์ธ, ๋ฐ๊ตฌ๋์ ๋ฌผ๊ฑด์ ๋ด๋ ๊ฒ์ ํ ๋น์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์๋ฅผ๋ค์ด, ๋ฐ๊ตฌ๋์ ๋น๊ทผ์ด๋ผ๋ ์ด๋ฆํ๋ฅผ ๋ถ์ด๊ณ ๋น๊ทผ ์จ์์ ๋ด๋ ๊ฒ์, ๋น๊ทผ์ด๋ผ๋ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ์ด ๋ณ์์ ๋น๊ทผ ์จ์์ ํ ๋นํ ๊ฒ๊ณผ ๊ฐ๋ค.
JS๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ณ ํ ๋นํ ๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
let [๋ณ์์ด๋ฆ] = [ํ ๋นํ ๊ฐ];
- let์ด๋ผ๋ ํค์๋๋ฅผ ์ฐ๊ณ ๋ณ์ ๋ช ์ ์ ํ๋ค
- ํ ๋น ์ฐ์ฐ์(=)๋ฅผ ์ฐ๊ณ ํด๋น ๋ณ์์ ํ ๋นํ ๊ฐ์ ์ ๋๋ค
2.2. ๋ณ์๋ช ์ ์ธ ๋ฐฉ๋ฒ
- ์ค๋ค์ดํฌ ์ผ์ด์ค(snake_case): ์ธ๋๋ฐ๋ฅผ ๋ฃ์ด ๊ตฌ๋ถํ๋ค
- ํ์ค์นผ ์ผ์ด์ค(PascalCase): ๋ชจ๋ ๋จ์ด๋ฅผ ๋๋ฌธ์๋ก ์์ํด ๊ตฌ๋ถํ๋ค
- ์นด๋ฉ ์ผ์ด์ค(camelCase): ๋ ๋ฒ์งธ ๋จ์ด๋ถํฐ ๋๋ฌธ์๋ก ์์ํด ๊ตฌ๋ถํ๋ค
Jacascript์์ ์์ด๋ก ๋ณ์๋ช /ํจ์๋ช ์ ์์ฑํ ๋๋ camelCase๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ด๋ก์ด๋ค
2.3. ํ์
๋ณ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ์ ์๋ค. ๋ฐ์ดํฐ์๋ ์ฌ๋ฌ ์ข ๋ฅ๊ฐ ์๋ค.
2.3.1. ์ซ์ํ
100, -100, 1/100, 3.141592
2.3.2. ๋ฌธ์์ด(string)
๋ฌธ์์ ์งํฉ์ผ๋ก, ๋ฐ์ดํ๋ก ๋๋ฌ์ธ์ฌ ํ์ํ๋ค. ํฐ/์์ ๋ฐ์ดํ ๋ชจ๋ ์๊ด ์์ง๋ง ํญ์ ๊ฐ์ ์ข ๋ฅ์ ๋ฐ์ดํ๋ก ๋ซ์์ค์ผํ๋ค
'apple', "apple", "1223"
2.3.3. ๋ถ๋ฆฌ์ธ(Boolean)
์ฐธ๊ณผ ๊ฑฐ์ง์ ๋ํ๋ด๋ ํ์ ์ด๋ค.
True, False
2.4. ํจ์
ํจ์๋ ์ ๋ ฅ์ ๋ฐ๋ผ ๊ทธ์ ๊ฑธ๋ง๋ ์์ ์ ํ๋ ํ๋์ ๋จ์์ด๋ค. ํจ์๋ฅผ ํํํ ๋๋ ํฌ๊ฒ ํํ์๊ณผ ์ ์ธ์์ผ๋ก ๋๋๋ค.
- ์ ์ธ์: function keyword๋ฅผ ์ ๋๋ก ํจ์๋ฅผ ์์ฑํ๋ค
- ํํ์: ๋ณ์์ ํ ๋นํ๋ ๊ฒ์ฒ๋ผ, ํจ์ ์ด๋ฆ์ ๋ณ์์ ํ ๋นํ๊ณ ํจ์๋ฅผ ์์ฑํ๋ค. ์, let name = function(parameter){...}
2.4.1. ํจ์์ ๊ตฌ์กฐ
function name(parameter) {}
- function ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ๋ง๋ ๋ค
- name: ํจ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ ์ด๋ฆ
- parameter(๋งค๊ฐ๋ณ์): ํจ์์ ํ์ํ ๋ณ์๊ฐ ์๋ค๋ฉด ์ฌ๊ธฐ์ ๋ฃ๋๋ค
- body: ํจ์๊ฐ ํธ์ถ๋๋ฉด ์คํํ ์ฝ๋๊ฐ ๋ค์ด์๋ ๊ณณ
๊ทธ๋ฆฌ๊ณ ํจ์๋ฅผ ๋ง๋ค ๋, ํจ์ ์์ return ํค์๋๊ฐ ์์ด์ผ ๊ฐ์ด ๋ฐํ๋๋ค. ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ๊ฐ์ ์ป๊ณ ์ถ๋ค๋ฉด ๊ผญ ํจ์ ์์ return ํค์๋๋ฅผ ์์ฑํ์.
#function ํค์๋๋ก example์ด๋ผ๋ ํจ์๋ช
์ ๊ฐ์ง๋ ํจ์๋ฅผ ์ ์ธํ๋ค
function example(){
let stuff = 1; #let ํค์๋๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ค
return stuff;
}
examle() #example ํจ์๋ฅผ ํธ์ถํ๋ค
example์ด๋ผ๋ ํจ์ ์ด๋ฆ๋ง ์์ฑํ๋ฉด ํจ์๋ ํธ์ถ๋์ง ์๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฐํ๊ฐ์ด ์๋ ํจ์์์ฒด๊ฐ ๋ฐํ๋๋ค. ๋ฐ๋์ ํจ์ ๋ค์ ()๋ฅผ ๋ถ์ฌ ํจ์๋ฅผ ํธ์ถํ๋๋ก ํ์.
+) ํจ์๋ฅผ ์์ฑํ๋ค === ํจ์๋ฅผ ์ ์ธํ๋ค/ ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด -> ํจ์๋ฅผ ํธ์ถํ๋ค
2.4.2. ํจ์ ์์
<๋งค๊ฐ๋ณ์๊ฐ ์๋>
function noParameter(){
let veg = 'carrot';
return veg;
}
noParameter();
<๋งค๊ฐ๋ณ์๊ฐ ์๋>
function YesParameter(carrot){
return carrot;
}
YesParameter('๋น๊ทผ');
function add(number){
number = number +1;
return number;
}
add(1) //2
add(10) //11
3. JS ๋ฌธ๋ฒ/ ๋ณ์ ์ฌํ/ ํ์ ์ฌํ
3.1. console.log
console.log๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋๋ฒ๊น (์ถ๋ ฅ) ๋ฐฉ๋ฒ์ด๋ค.
console.log('apple');
3.2. var, let, const ์ฐจ์ด์
JavaScript์์ ์ฌ์ฉ๋๋ ๋ณ์ ์ ์ธ ๋ฐฉ์์๋ ์ธ๊ฐ์ง๊ฐ ์๋ค. var, let, const์ด๋ค. var์ ๋น๊ต์ ์ค๋์ ๋ถํฐ ์ฌ์ฉ๋์ด ์์ง๋ง, ํ์ฌ๋ ์ ์ฌ์ฉ๋์ง ์๋ ๋ณ์ ์ ์ธ์์ด๊ณ , ์ฃผ๋ก let๊ณผ cont๊ฐ ์ฌ์ฉ๋๋ค.
3.2.1. ์ค๋ณต ์ ์ธ๊ณผ ์ฌํ ๋น
var์ ์ค๋ณต ์ ์ธ๊ณผ ์ฌํ ๋น์ด ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
var a =5;
console.log(a) //5
var a =10;
console.log(a) //10
let์์๋ ์ค๋ณต ์ ์ธ์ ํ์ฉํ์ง ์๊ณ , ์ฌํ ๋น ๊ฐ๋ฅํ๋ค.
//์ค๋ณต ์ ์ธ์ ๋ถ๊ฐ๋ฅํ๋ค
let a =5;
let a=10;
cnosole.log(a); // SyntaxError: Identifier 'a' has already been declared
//์ฌํ ๋น์ ๊ฐ๋ฅํ๋ค
let a =5;
console.log(a); //5
a= 10;
console.log(a); //10
const๋ ์ค๋ณต ์ ์ธ์ ํ์ฉํ์ง ์๊ณ , ์ฌํ ๋น๋ ๋ถ๊ฐ๋ฅํ๋ค. ์๋ํ๋ฉด const๋ ์์๋ฅผ ์ ์ธํ๋ ํค์๋์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์์๋, ํ ๋ฒ ๊ฐ์ด ์ ํด์ง๋ฉด ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ๋ถ๋ถ์์ ๋ณ๊ฒฝ๋์ง ์๋ ๊ฐ์ด๋ค.
//์ค๋ณต ์ ์ธ์ ํ์ฉ๋์ง ์๋๋ค
const a = 5;
const a = 10;
cnosole.log(a); // SyntaxError: Identifier 'a' has already been declared
//์ฌํ ๋น๋ ๋ถ๊ฐ๋ฅํ๋ค
const a = 5;
console.log(a); // 5
a = 10;
console.log(a); // TypeError: Assignment to constant variable.
3.2.2. ์ค์ฝํ ๋ฒ์
var์ ํจ์ ๋จ์ ์ค์ฝํ(function-level scope)์ด๋ค. var ๋ณ์๊ฐ ์ ์ธ๋ ํจ์ ๋ด๋ถ์ ์ด๋์๋ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ์ง๋ง, ์ธ๋ถ๋ก๋ ์ฐธ์กฐ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ๋ํ ํจ์ ๋ด๋ถ์์ ์ ์ธ๋ var์ ์ง์ญ๋ณ์๋ก ๊ฐ์ฃผํ์ง๋ง, ํจ์ ์ธ๋ถ์์ var๊ฐ ์ ์ธ๋์๋ค๋ฉด ์ ์ญ๋ณ์๋ก ๊ฐ์ฃผํ๋ค.
function hello(){
var a = 10;
console.log(a);
}
hello(); // 10
console.log(a); //ReferenceError: a is not defined
let๊ณผ const๋ ๋ธ๋ก ๋จ์ ์ค์ฝํ(block-level scope)์ด๋ค. { } ๋ธ๋ก ๋ด๋ถ์์ ์ ์ธ๋ let, const ๋ณ์๋ ์ธ๋ถ์์ ์ฐธ์กฐ๋์ง ์๋๋ค.
function hello() {
let a = 5;
console.log(a); // 5
}
console.log(a); // ReferenceError: a is not defined
3.2.3. ํธ์ด์คํ
JS์์ ํธ์ด์คํ (hoisting)์ด๋, ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ณ์์ ํจ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ธ ์ ์ ๋ฏธ๋ฆฌ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋จ์ํ๊ฒ ์ค๋ช ํ์๋ฉด, ๋จ์ด ๋ป ์ฒ๋ผ ์คํฌ๋ฆฝํธ ๋ด ๋ณ์์ ํจ์์ ์ ์ธ ์์์ ์๊ด ์์ด ์์๊ฐ ๋์ด์ฌ๋ ค์ง ๋ฏํ ํ์์ด๋ค. ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋์ด์ฌ๋ ค์ง๋ ๊ฒ์ด ์๋๋ผ JS ์์ง์ด ๋จผ์ ์ ์ฒด ์ฝ๋๋ฅผ ํ ๋ฒ ์ค์บํ๊ณ ์คํ์ปจํ ์คํธ์ ๋ฏธ๋ฆฌ ๊ธฐ๋กํด ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ํ์์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
var์ ํธ์ด์คํ ์ด ๋ฐ์ํ๋ค. ๋ค์ ์ ์ธ๋ ๋ณ์ a๊ฐ ์์ ์ฐธ์กฐ๋์์์๋ error๊ฐ ์๋ undefined๊ฐ ํธ์ถ๋๋ค.
console.log(a); // undefined :: ๋ณ์ ์ ์ธ ์ด์ ์ ๋ณ์ ์ฐธ์กฐ ๊ฐ๋ฅ
var a // ์ด๊ธฐํ
console.log(a); // undefined
a = 10 // ํ ๋น
console.log(a); // 10
let๊ณผ const๋ ํธ์ด์คํ ์ด ๋ฐ์ํ์ง๋ง, ๋ค๋ฅด๊ฒ ์๋ํ๋ค.
console.log(a); // ReferenceError :: ๋ณ์ ์ ์ธ ์ด์ ์ ๋ณ์ ์ฐธ์กฐ ๋ถ๊ฐ๋ฅ
let a // ์ด๊ธฐํ
console.log(a); // undefined
a = 10 // ํ ๋น
consloe.log(a); // 10
let๊ณผ const๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒฝ์ฐ์๋, ๋ณ์์ ์ ์ธ๊ณผ ์ด๊ธฐํ ์ฌ์ด์ ์ผ์์ ์ผ๋ก ๋ณ์๊ฐ์ ์ฐธ์กฐํ ์ ์๋ ๊ตฌ๊ฐ์ธ TDZ(Temporal Dead Zone)๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ฒ์ด์ง๋ ํ์์ด๋ค. ํธ์ด์คํ ์ ๋ฐ์ํ์ง๋ง, ๊ฐ์ ์ฐธ์กฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ํ์ง ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
'๐ Public > web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTML & Internet (3) | 2024.09.05 |
---|---|
[๊ณต๋ถ] MySQL ๊ธฐ์ด (9) | 2024.09.02 |
์น ์ฌ์ดํธ ๊ฐ๋ฐ_๊ธฐ์ด ๋ฌธ๋ฒ ์ ๋ฆฌ (0) | 2024.09.01 |
์น ์ฌ์ดํธ ์ ์_ํ์ด์ฌ ๊ธฐ์ด ์ ๋ฆฌ (0) | 2024.08.23 |
[๋นก๊ณตํ Web Hacking Track] OT (0) | 2024.08.14 |