JavaScript (Front End) ... Part 1
2020. 4. 2. 13:04ㆍToday I learned/Online Courses
사이트: edwith
강의: [부스트코스] 웹 프로그래밍 챕터 2, DB 연결 웹 앱
학습일: 2020년 3월 19일, 20일
0. 소개
기본 개념
- 서비스의 구조가 단순하더라도 백엔드 관련 배경지식은 상당히 많이 필요
- 데이터: 웹사이트에 표시되는 내용
- 데이터베이스: 데이터를 관리하는 데 필요한 프로그램
- JDBC: Java에서 데이터를 쓰고, 읽고, 수정, 삭제하는 데 쓰이는 프로그램
- 부스트코스에선 MySQL 데이터베이스, Spring JDBC를 이용
- FE(Front End)의 Key Point
- JavaScript: 웹 화면의 다양한 요소를 움직이는 데 쓰이는 프로그래밍 언어
- DOM, 이벤트, 서버와 통신하는 Ajax
- BE(Back End)의 Key Point
- JSP
- Servlet과 쓰는 방법이 다르지만, 동작하는 방식은 같음
- 최종적으로 Servlet으로 바뀌어 동작함
- forward, redirect, 4개의 scope, JSP의 내장 객체
- JSP
1. JavaScript - FE
JavaScript의 변수/연산자/타입
- JavaScript의 버전: ES(ECMA Script) 버전에 따라 달라지며, JavaScript 엔진이 해당 ES 버전을 기반으로 코드 해석
- 2018년 기준으로 ES6 지원 브라우저(Firefox, Chrome 등)가 다수를 차지하고 있어 ES6 문법이 표준으로 쓰임
- ES6: ES5 문법을 포함하여 하위호환성 문제는 없지만, 브라우저별로 세부 기능 지원 범위가 다르므로 주의
- JavaScript의 변수(variable)
- 참고자료: Grammar and types - JavaScript | MDN
- 선언방법: var, let, const
- 형태: 선언방법 변수명 = 값;
- var과 let, const의 차이: var과 let은 변수에 값을 다시 할당할 수 있고, const는 다시 할당할 수 없음
- 선언방법에 따라 변수의 유효범위인 scope가 달라짐
- JavaScript의 연산자: 수학연산자, 논리연산자, 삼항연산자, 비교연산자 등
- 연산자 간 우선순위는 ( )를 사용해 표현
- 수학연산자: +, -, *, /, % (나머지) 등
- 논리연산자: ||, &&, !
- || (or): 왼쪽 표현식과 오른쪽 표현식 중 하나라도 만족되는지 확인
- 왼쪽이 만족되면 오른쪽의 만족 여부는 아예 확인하지 않음
- 기본값을 설정할 때 활용됨
- 예시) 변수 result의 값을 변수 name의 값으로 하되, name의 값이 없는 경우 기본값을 "default" 설정
- const name = "crong"; const result = name || "default";
- && (and): 왼쪽과 오른쪽 표현식이 모두 만족되는지 확인
- 왼쪽이 만족되지 않으면 오른쪽의 만족 여부는 아예 확인하지 않음
- 변수의 값을 고정하고자 할 때 활용됨
- 예시) 변수 result의 값이 변수 name의 값과 상관없이 항상 "default"가 되도록 설정
- const name = "crong"; crong result = name && "default";
- || (or): 왼쪽 표현식과 오른쪽 표현식 중 하나라도 만족되는지 확인
- 삼항연산자: 조건문을 간단하게 표시할 수 있는 연산자
- 형태: 표현식 ? 표현식이 true일 경우의 실행 코드 ! 표현식이 false일 경우의 실행 코드
- 간단한 비교나 값 할당 시 활용
- 예시) const data = 11; const result = (data > 10) ? "Pass" : "Fail";
- 비교연산자: ==, ===, !=, !==, >, < 등
- JavaScript에선 ==보다 ===를 주로 사용
- ==는 타입을 비교하지 않고 ===는 타입까지 비교함
- ==는 타입을 비교하지 않으므로 다양한 오류가 발생할 수 있음
- 예시) ==를 사용할 경우 true로 나오는 표현식
- 0 == false;
- "" == false;
- 0 == "0";
- null == undefined;
- JavaScript에선 ==보다 ===를 주로 사용
- JavaScript의 타입
- 참고자료: JavaScript data types and data structures - JavaScript | MDN
- 종류: undefined, null, boolean, number, string, object, function 등
- 선언할 때가 아닌, 실행되는 순간에 결정됨
- 다른 언어와 달리 선언할 때 변수에 타입을 명시하지 않아도 됨
- 동적 타입(Dynamic type): 함수 안의 매개변수(parameter)나 변수가 실행될 때 타입이 결정됨
- 타입을 확인하는 통일된 명시적인 방법은 없음
- 문자, 숫자 등의 기본적인 타입은 typeOf으로 간략하게 확인할 수 있음
- typeOf의 한계: 어떤 객체의 인스턴스인지 알려주지 않음
- 예시) typeOf null과 typeOf {} 모두 "object"를 반환
- typeOf의 한계: 어떤 객체의 인스턴스인지 알려주지 않음
- 배열의 경우 isArray( ) 메서드로 확인할 수 있으나, 브라우저에 따라 지원 범위가 다름
- 정확한 타입이 필요한 경우 toString.call(대상 객체) 메서드로 객체의 타입까지 구체적으로 알 수 있음
- 예시
- toString.call("test") → "[object String]"
- toString.call(3) → "[object Number]"
- toString.call(null) → "[object Null]"
- toString.call([]) → "[object Array]"
- toString.call({}) → "[object Object]"
- 예시
- 문자, 숫자 등의 기본적인 타입은 typeOf으로 간략하게 확인할 수 있음
JavaScript의 조건문/반복문/문자열
- 조건문: if ... else if ... else, switch ... case ... default 등
- 참고자료: 제어 흐름과 에러 처리 - JavaScript | MDN
- if ... else if ... else
- 형태: if (조건1) { 조건1이 true일 때 실행 코드 } else if (조건2) { 조건2가 true일 때 실행 코드 } ... else { 조건1, 조건2 모두 false일 때 실행 코드 }
- 실행 코드가 짧은 경우 둘러싼 { }를 생략해도 되나, 가독성을 위해 가능하면 생략하지 않는 것을 권장
- switch ... case ... default
- 형태: switch (표현식) { case 값1: 표현식 === 값1일 때 실행 코드; case 값2: 표현식 === 값2일때 실행 코드; ... default: 표현식과 일치하는 값이 없을 때 실행 코드 }
- break: switch를 종료시키는 구문으로, 일반적으로 모든 case마다 넣어줘야 정상적으로 작동
- 조건문이 특정 값에 명확히 일치할 때 사용하면 코드의 가독성을 높여줌
- 반복문: for, while 등
- 참고자료: Loops and iteration - JavaScript | MDN
- for: 가장 많이 사용되는 반복문
- 형태: for ( 초기문; 조건문; 증감문 ) { 반복 시 실행 코드 }
- 예시
- for (let i = 0; i < arr.length; i++) { 실행 코드 }
- 개선본: for (let i = 0, len = arr.length; i < len; i++) { 실행 코드 }
- arr.length를 매 반복마다 계산하는 비효율을 제거
- Array.prototype.forEach( ): 배열의 요소들을 대상으로 반복문을 실행하는 메서드
- for ... in: 객체를 탐색할 때 사용되는 반복문
- for ... of
- 최근 ES에 포함된 반복문 기능이어서 브라우저별로 호환성 이슈가 있음
- 문자열: JavaScript에서는 문자와 문자열의 타입이 string으로 동일함
- 문자열은 내부적으로 객체로 변환되기 때문에, 객체 내부의 메서드를 활용해 문자열을 다양하게 다룰 수 있음
- 예시
- String.prototype.replace( ): 문자열의 일부를 바꾸는 메서드
- String.prototype.split( ): 문자열을 특정한 기준으로 분할해 반환하는 메서드
- 예시
- RegExp(Regular Expression, 정규표현식)을 지원해, 문자열을 패턴화해 다양하게 활용할 수 있음
- 문자열은 내부적으로 객체로 변환되기 때문에, 객체 내부의 메서드를 활용해 문자열을 다양하게 다룰 수 있음
'Today I learned > Online Courses' 카테고리의 다른 글
Web UI 개발 (Front End) ... Part 1 (0) | 2020.04.02 |
---|---|
JavaScript (Front End) ... Part 2 (0) | 2020.04.02 |
Java Servlet (Back End) ... Part 2 (0) | 2020.04.01 |
Java Servlet (Back End) ... Part 1 (0) | 2020.04.01 |
Java 개발환경 설정 (Back End) (0) | 2020.03.31 |