반응형 웹 디자인
- 디바이스나 브라우저의 크기에 상관없이 동일한 콘텐츠를 사용할 수 있도록 디자인
- 스마트 폰 애플리케이션을 제작할 때도 이 개념은 중요
- 웹에서는 css 의 media query 와 상대적인 크기 개념으로 구현을 합니다.
JavaScript
1.개요
- script는 웹 페이지의 처리능력을 향상시키기 위해서 등장
- 동적으로 DOM 객체의 변환을 하는 것이 목적
- 초창기에는 apple script, vb script 등이 존재했지만 지금은 javascript를 표준으로 간주
- java 와 javascript는 근본적으로는 관계가 없습니다.
- 최근에는 타입의 안정성(정적인 자료형 도입, 클래스 의 개념)을 추가한 typescript도 있습니다.
- 기본적으로는 브라우저 안에서만 동작하는 클라이언트 사이드 언어
- 웹 프로그래밍을 할 때는 자바스크립트가 필수 요소라서 최근에는 라이브러리나 프레임워크를 이용해서 자바스크립트 문법으로 서버 사이드 개발이 가능한 node.js 도 등장했고 브라우저 엔진 위에서 동작하는 응용 프로그램을 만드는 용도로도 사용이 되며 스마트 폰 앱 애플리케이션 제작에도 활용됩니다.
- 자바스크립트 문법 만으로 웹 서버와 클라이언트를 같이 제작하기도 합니다.
M(Mongo DB)E(Express.js)A(Angular.js)N(Node.js) 이라고 합니다.
A 대신에 react 나 vue를 사용하기도 합니다.
- 최근에는 텐서플로우 와 같은 AI 분야의 라이브러리도 등장
2.사용 방법
1) 외부 파일에 만들어두고 사용 - 가장 권장
<script src="자바스크립트 파일 경로"></script>
2) html 파일 내부에서 만들어서 사용
<script>
내용
</script>
3) 태그 안에 만들어서 사용<태그 이벤트="script:내용"></태그>
3.작성 시 주의 사항
- 대소문자 구별
;
은 한줄에서 2개 이상의 명령을 작성할 때 명령을 구분하기 위해서 사용- 명령어마다 ;을 할 필요는 없지만 한 줄에 2개의 명령어를 사용할 때는 필수
- 문자열을 만들 때 작은 따옴표나 큰 따옴표를 동일한 역할을 수행
- 작은 따옴표나 큰 따옴표 안에 다른 따옴표를 할 때는 반드시 나중에 만들어진것을 먼저 닫아야 합니다.
- 자바스크립트나 파이썬은 줄 단위로 번역하면서 실행되기 때문에 뒷부분에 에러가 있더라도 에러가 없는 부분까지는 수행되고 예외가 발생할 수 도 있습니다.
4.제어문자
\
다음에 하나의 영문자를 추가해서 만든 특별한 문자 상수\n
: 줄 바꿈\t
: 탭\', \", \\
: ', ", \를 의미
5.주석
//내용
: 한 줄 주석/* 내용 */
: 여러 줄 주석
6.Literal
- 사용자가 직접 작성한 데이터
- 숫자 리터럴: 10진수 형태로 작성
- 문자열 리터럴: '문자열' 또는 "문자열"
- 논리형 리터럴: true, false
- 참조형 리터럴: null(만들어졌지만 가리키는 데이터가 없음), undefined(만들어지지 않은 데이터)
var a //a가 undefined
var b = null //b는 null
7.변수 선언
var 변수명 = 값
- 처음에 값을 대입하지 않으면 변수는 생성되지 않습니다.
- 초기값을 대입하지 않은 경우에는 나중에 값을 대입해야만 생성되는것으로 간주
- var를 붙이지 않고 만드는 것이 가능한데 이 경우는 실제로는 변수가 만들어지는 것으로 보지 않습니다.
- var를 붙이지 않으면 전역변수의 개념처럼 동작합니다.
- 변수명 = 값 이런식으로 하기도 합니다.
8.데이터 출력
1) 브라우저 창에 출력document.write(메시지 또는 변수 나 상수 또는 연산식 그리고 함수 수행)
document.writeln(메시지 또는 변수 나 상수 또는 연산식 그리고 함수 수행)
- writeln은 줄 바꿈이 아니고 한 번에 수행해 달라는 요청
- ln이 없으면 모아서 출력하는 것이고 ln이 있으면 모으지 말고 바로 출력해 달라는 것입니다.
- 메시지가 길 때 한번에 작성하는 것이 어려우면 write를 이용해서 나누어서 작성한 후 한번에 출력해달라고 합니다.
2) 대화상자에 출력
alert(출력할 내용)
- 최근 브라우저에서는 별도의 윈도우 출력하는 것을 권장하지 않아서(팝업 금지) 옵션을 변경하지 않으면 출력되지 않을 수 있습니다.
3) 브라우저 디버거에 출력
console.log(출력할 내용)
- 화면에서는 보이지 않고 디버거 창을 열어서 콘솔에서 확인
- 크롬의 경우는 마우스 오른쪽 클릭해서 [검사]를 실행해야 확인이 가능
9.스크립트 작성 위치
- 스크립트는 html 문서 내의 어느곳에나 작성 가능
- 순서대로 실행되므로 자신이 사용하고자 하는 객체는 호출하기 전에 만들어져 있어야 합니다.
- 예전에는 head에 만들었는데 최근에는 body 안에 만들기도 합니다.
10.html 파일을 만들고 작성
<script>
//변수 만들기
var msg = "자바스크립트"
//브라우저에 출력
document.write(msg)
//대화상자에 출력
alert("대화상자에 출력")
//콘솔에 출력
console.log("콘솔에 출력")
</script>
11.javascript 디버깅
- 자바스크립트는 대부분의 IDE가 디버깅 기능을 제공하지 않습니다.
1) 자바스크립트는 에러가 없는 부분까지 실행하는 경우가 많기 때문에 중간 중간 출력하는 코드를 삽입해서 어디까지 에러없이 실행되는지 확인해 볼 수 있습니다.
2) 브라우저의 검사 기능을 이용
- 크롬이나 IE는 검사 기능을 이용하면 문서의 구조, 그리고 css 적용, 자바스크립트 에러를 어느 정도까지는 확인할 수 있도록 해줍니다.
- 단지 에러라고 출력합니다. 예외 종류를 구체적으로 알려주지는 않습니다.
document.wris is not a function
* 위 문장만 가지고는 document 가 없는 것인지 wris가 없는 것인지 알 수 없습니다.
12.배열 생성
- 자바스크립트의 배열은 List 입니다.
var 배열명 = [데이터 나열]
var 배열명 = new Array(데이터 나열)
데이터 사용
배열명[정수 인덱스]
없는 인덱스를 사용하면 가져올 때는 undefind 대입할 때는 추가가 됩니다.
파이썬이나 자바스크립트는 객체가 클래스로부터 만들어지지 않고 Map의 인스턴스로 보는 것이 이해하기 편리합니다 .
13.자료형 변환
1) 숫자로 된 문자열에 정수를 하게되면 문자열을 숫자로 변환해서 을 수행
2) 자료형(데이터)를 이용하면 데이터를 자료형으로 변환
- Number, Boolean, String 으로 변환 가능
3) 다른 자료형 객체를 문자열로 변환할 때는 toString() 메소드의 결과를 이용해도 됩니다.
14.연산자
1) 최우선 연산자
- [인덱스]: 배열에서 인덱스번째 데이터를 가리키기 위한 연산자
- . : 객체가 자신에게 속한 속성이나 메소드를 호출할 때 사용하는 연산자
2) 증감 연산자
- 정수 변수에만 사용가능한 연산자
++
,--
++
는 변수의 값을 1증가시키고--
는 변수의 값을 1감소시키는 연산자- 명령문에 사용되는 경우
++
를 변수 앞에 사용하면 변수의 값을 증가시키고 명령문에 변수의 값을 사용하고 변수 뒤에 사용하면 변수의 값을 명령문에 사용하고 변수의 값을 증가시킵니다.
3) 산술 연산자
- 숫자 데이터끼리만 사용
%
: 나머지 구해주는 연산자*
,/
: 곱 과 나누기 연산자+
,-
: 더하기 와 빼기 연산자
4) 결합 연산자
- 문자열 과 다른 종류의 데이터 또는 문자열과의 결합에 사용:
+
5) 비트 논리 연산자
- 정수를 2진수로 변환해서 비트 단위로 연산한 후 다시 10정수로 리턴해주는 연산자
&
: 둘 다 1인 경우만 1 그 이외의 경우는 0 -and
|
: 둘 다 0인 경우만 0 그 이외의 경우는 1 -or
^
: 두 개가 같으면 0 다르면 1 -xor(eXclusive OR)
파이썬의 numpy, pandas 나 R에서는 collection 에 이 연산자를 이용해서 조건 필터링을 합니다.
~
: 1의 보수<<
: 왼쪽의 데이터를 오른쪽의 숫자만큼 왼쪽으로 shift - 1번 할 때 마다* 2
>>
: 왼쪽의 데이터를 오른쪽의 숫자만큼 오른쪽으로 shift - 1번 할 때 마다/2
6) 비교 연산자
>,>=, <, <=
: 크기 비교==
: 값의 일치 여부를 확인===
: 값과 자료형까지 일치하는지 확인"123" == 123
: true -> 123을 문자열로 변환해서 비교해버립니다.123 == 123
:"123" == "123"
"123" === 123
: false!=
: 값의 불일치 여부를 확인
7) 조건 논리 연산자
&&
: and||
:or데이터 전체를 하나로 보고 연산을 해서 결과나 boolean 1개로 리턴
8) 여러 개의 데이터로 구성된 데이터끼리 and 나 or 연산을 할 때는 대부분 &
9) 삼항 연산자
(조건식)?명령1:명령2
- 조건식이 true이면 명령1 false 이면 명령2
- 조건식은 boolean 데이터가 나오는 식이어도 되지만 숫자의 경우는 0이면 false 그 이외의 수는 true로 간주하고 존재하는 데이터면 true 존재하지 않는 데이터(null, undefined)는 false로 간주합니다.
var a = 10
a?100:200
-> a는 10이라는 값을 가지고 있어서 true로 간주a = 0
-> a는 false로 간주
var ar ;
ar은 false
ar = [100, 200];
ar은 true
10) 대입 연산자
=
: 오른쪽의 데이터를 왼쪽의 변수에 대입+=
: 왼쪽의 변수에 저장된 값과 오른쪽의 데이터를 + 연산을 해서 결과를 왼쪽의 변수에 대입
var a = 10
a += 7
a = a + 7 과 같습니다.
11) new
- 생성자를 호출할 때 사용하는 연산자로 생성자를 이용해서 객체를 생성하고 생성한 객체의 참조를 리턴하는 연산자
12) this
- 생성자나 인스턴스 메소드 안에서 객체 자신을 가리키는 포인터
13) typeof
- 데이터의 자료형을 문자열로 리턴해주는 연산자
14) delete
- 데이터를 삭제하는 연산자
15) instance of
- 객체가 특정 클래스로부터 만들어 졌는지 확인해서 boolean 으로 리턴해주는 연산자
16) in
- 속성이 객체에 존재하는지 확인해서 boolean으로 리턴하는 연산자
15.제어문
1) 제어문의 종류
분기문 : 조건이나 값에 따라 다른 문장을 수행하도록 해주는 명령어
if
: 조건에 의한 분기switch
: 값에 의한 분기
반복문(Loop - Iteration)
while
: 조건이 false가 될 때 까지 수행do ~ while
: 일단 한 번은 하고 조건이 false가 될 때 까지 반복for
: 시작점부터 종료하는 부분까지 하나의 괄호안에 모두 작성for - each
: for ~ in - 어떤 객체나 데이터의 모임을 순서대로 방문(순회)
- 자바스크립트는 데이터의 모임 뿐 아니라 객체도 for-in 사용 가능
2) if
- 조건 분기를 위한 명령어
if(조건1){
조건1의 내용이 true 일 때 수행할 내용;
}else if(조건2){
조건1의 내용이 false 이고 조건2가 true일 때 수행할 내용;
}else if(조건3){
앞의 모든 조건이 false이고 조건3 이 true일 때 수행할 내용;
}..
else{
앞의 모든 조건이 false일 때 수행할 내용
}
- if는 필수이고 else if는 생략가능하고 여러 개 사용도 가능
- else는 생략가능하고 1번만 사용 가능
3) switch
- 값에 의한 분기
switch(변수 또는 정수나 문자열을 리턴하는 연산식){ case 값1: () 안의 결과가 값1일 때 수행할 내용; break; case 값2: () 안의 결과가 값2일 때 수행할 내용; break; ... default: 일치하는 값이 없을 때 수행할 내용 break; }
break가 없으면 break를 만날 때 까지 계속 수행합니다.