PROGRAMMING/Web
03 JavaScript
yuujoeng
2022. 8. 17. 20:47
1 JavaScript
- 객체 기반의 스크립트 프로그래밍 언어
- 동적, 타입을 명시할 필요 없는 인터프린터 언어
- 객체지향형 프로그래밍과 함수형 프로그래밍 모두 표현 가능
- 웹 브라우저 내에서 주로 사용하며 다른 응용프로그램의 내장 객체에도 접근할 수 있는 기능을 가짐
- Node.js와 같은 런타임 환경과 같이 서버 프로그래밍에도 사용됨
1) ES6
- ECMAScript: 크로스 브라우징 이슈를 해결하기 위한 javascript 표준화
/* 템플릿 리터럴 */
var name = "현진";
var age = 25;
console.log(`저의 이름은 ${name}이고, 나이는 ${age}살 입니다.`);
/* 화살표 함수 */
var str = arg1 => console.log(arg1);
/* This */
function Obj(value) {
this.value = value;
}
var obj = new Obj(0);
console.log(obj.value); // 0
/* let, const */
console.log(i); // 0
if (true) {
let j = 10;
}
console.log(j);
if (true) {
const k = 100;
}
console.log(k);
2) 비동기 처리
- 콜백 함수 사용 → 비동기 처리의 가장 기본이지만, 콜백 지옥에 빠질 수 있다는 단점이 있음
// 콜백 함수
function printString(callbackParam) {
console.log(callbackParam);
}
// 콜백 함수 호출
function printString(callbackParam) {
console.log(callbackParam);
}
function callPrint(callback) {
let value;
console.log("Wait 3 sec.");
console.log("waiting...");
setTimeout(function() {
value = "Hello";
callback(value);
}, 3000);
}
// 실행
callPrint(printString);
// 결과
Wait 3 sec.
waiting...
(3초 대기)
Hello
- Promise → 콜백 지옥을 해결할 수 있는 방식성공 시에는 resolve, then 실패 시에는 reject, catch
- Promise를 활용한 async/await
// async
async function hello() {
return 'Hello';
}
function callHello() {
const r = hello();
console.log(r);
}
callHello();
// 결과
Promise { 'Hello' }
//await
async function hello() {
return 'Hello';
}
// (2) 새로 추가된 async 키워드
async function callHello() {
// (1) 새로 추가된 await 키워드
const r = await hello();
console.log(r);
}
callHello();
//결과
Hello
2 변수/연산자/자료형
1) 변수
- var 선언은 전역 범위 또는 함수 범위이며, let 및 const는 블록 범위
- 실현가능한 특정 프로그램의 그룹으로 다른 파일의 변수, 함수를 참조
- var 변수는 범위 내에서 업데이트하고 다시 선언 할 수 있다. (재선언 O, 재할당 O)
- let 변수는 업데이트 할 수 있지만 다시 선언 할 수는 없다. (재선언 X, 재할당 O)
- null은 변수를 선언하고 빈 값을 할당한 상태(빈 객체) _ 수동
- undifined는 자료형이 없는 상태로 선언 후에 값을 할당하지 않은 변수에 할당_ 자동
1) 연산자
- 증가연산자: x++ (후위) / ++x (전위) / x+=1
- 감소연산자: x-- (후위) / --x (전위) / x-=1
- 문자열 연결(+) 연산자는 두 문자열의 값을 서로 연결한 새로운 문자열을 반환
- 단축 할당 연산자인 += 또한 문자열을 연결결할 때 사용할 수 있음
- == → 경우 임의적으로 Type을 바꿔서 비교하기 때문에 원하는 결과와 다른 값이 나올 수 있음
- === → type까지 확인하는 연산자 _ null과 undefine은 같지 않음
- && → 조건 중 하나라도 false 이면 false
- !! → 두개의 조건이 모두 false여야 false
- 삼항연산자 : condition이 참이라면 val1 거짓이라면 val2를 반환
condition ? val1 : val2