일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 도커 #docker #docker-compose.yml #도커컴포즈 #배포 #spring #mysql #docker-compose
- /
- 도커 #Docker #배포 #Spring #MySQL #백엔드배포
- chatgpt #gpt #챗지피티 #ai
- Today
- Total
개발자 데뷔!
Java Script 기본 본문
https://ko.javascript.info/intro
프론트 엔드 개발의 교과서
JavaScript 기본 정석 책
-
-
내용정리 시작
-----------------------------------------------------------------------------------------------------------------------------------
1. 1정의 )
Java 랑 JavaScript 랑 완전 다름 !!!
script : 자바스크립트로 작성한 프로그램.
웹페이지의 HTML 안에 작성할 수 있다.
웹페이지를 불러오면 스크립트 자동 실행
- 브라우저 & 서버에서 모두 실행 가능 !
V8 – Chrome과 Opera에서 쓰입니다.
SpiderMonkey – Firefox에서 쓰입니다.
IE는 버전에 따라 'Trident’나 'Chakra’라 불리는 엔진을 사용합니다. 'ChakraCore’는 Microsoft Edge에 사용되며, 'SquirrelFish’는 Safari에 사용됩니다.
'자바스크립트 엔진' 이 있는 모든 디바이스에서 동작!
- 엔진 종류 마다 특유의 코드 네임 존재
- 위가 그 내용
<자바스크립트 엔진 동작 과정>
1. 엔진(브라우저라면 내장 엔진)이 스크립트를 읽습니다
2. (파싱).읽어 들인 스크립트를 기계어로 전환합니다
3. (컴파일).기계어로 전환된 코드가 실행됩니다. 기계어로 전환되었기 때문에 실행 속도가 빠릅니다.
* 엔진은 프로세스 각 단계마다 최적화를 진행
: 컴파일이 끝나고 실행 중인 코드를 감시하면서, 데이터를 분석하고, 분석 결과를 토대로
기계어로 전환된 코드를 다시 최적화 → 스크립트 실행 속도 더욱 더 빨라짐
<자바스크립트 강점>
HTML/CSS와 완전히 통합할 수 있음
간단한 일은 간단하게 처리할 수 있게 해줌
모든 주요 브라우저에서 지원하고, 기본 언어로 사용됨
<자바스크립트 제약>
- 메모리나 CPU 같은 저수준 영역의 조작을 허용하지 않음
- 브라우저는 보안을 위해 자바스크립트의 기능에 제약
-----------------------------------------------------------------------------------------------------------------------------------
1.4 개발자 콘솔)
chrome )) F12 : 개발자도구 창
> 패널 중 console 에서 오류 확인 가능 [가장 우측 에 오류난 '파일명: line' 표시됨]
? 명령어를 개발자콘솔에서 여러줄로 입력 후 한꺼 번에 실행하고 싶다
→ shift + Enter
-----------------------------------------------------------------------------------------------------------------------------------
2.1 Hello World!)
<script> 태그 : html 문서 중간에 자바스크립트 프로그램 삽입하는 역할
* 외부스크립트 :
<script src="/path/to/script.js"></script>
* 절대경로, 상대경로, url 모두 가능
! 스크립트가 길어지면 분리된 파일로 사용하는 것이 이득 !
스크립트를 다른 파일로 작성해 불러올 시 )
브라우저가 스크립트를 다운받아 캐시(cache)에 저장하기
즉, 여러 페이지에서 동일한 스크립트를 사용하는 경우
페이지가 바뀔 때마다 스크립트를 새로 다운받을 필요없이 캐시로부터 스크립트를 가져와 사용
→ 한번만 다운받으면 되므로, → 트래픽이 절약 & 웹 속도 향상
* 주의 : 1. script 내부에 기술 하는것 / 2. 분리된 파일로 작성후 src태그로 불러오는것
ex)
X : script 내부에 브라우저 함수 사용하고, src태그로 파일도 호출되었으므로 실행 안됨 !
<script src="file.js">
alert(1); // src 속성이 사용되었으므로 이 코드는 무시됩니다.
</script>
O : 둘다 사용했지만, 다른 script 태그로 분리했으므로 실행 됨 ! 가능 !
<script src="file.js"></script>
<script>
alert(1);
</script>
-----------------------------------------------------------------------------------------------------------------------------------
2.2 코드 구조)
1. Statement (command) 명령문)
세미콜론 자동 삽입 :
* 줄 바꿈 == 세미콜론(semicolon) '암시적'인식 → error가 발생하지 않음
but 예외 ) ex) X : 안되는 코드 , 왜냐하면, 대괄호 [...]앞에는 세미콜론이 있다고 가정하지 않기 때문
alert("에러가 발생합니다.")
[1, 2].forEach(alert)
즉, 세미콜론을 생략할 수 있지만, 항상 쓰는 습관 !!
2. Comment 주석)
한줄 : // → Ctrl + /
여러줄 : /* ... */ → Ctrl + Shift + / (단, VScode 에서는 Shift + Alt + A 사용)_
-----------------------------------------------------------------------------------------------------------------------------------
2.3 엄격모드)
자바스크립트 2009 년 대규모 업데이트 ( 기존 기능 수정) 이후, 하위호환성 문제 발생
즉, 변경사항 대부분은 기본모드에서 활성화되지 않도록 설계됨
→ but, use strict 지시자 : 엄격모드(strict mode) 활성화 : 변경사항이 활성화 되는 기능
사용) script 최 상단에 위치 or 함수 본문 맨 앞 (해당 함수만 엄격모드로 실행 )
"use strict";
// 이 코드는 모던한 방식으로 실행됩니다.
...
* 취소는 안됨
* 브라우저 콘솔에선 use strict가 기본적으로 적용되어 있지 않음
코드를 클래스와 모듈을 사용해 구성한다면 "use strict"를 생략해도 됨 ! (자동실행 되서)
-----------------------------------------------------------------------------------------------------------------------------------
2.4 변수)
* 하나의 키워드(ex)let, const)에 변수 여러개 선언 가능 !
let : 변수
var : 변수(비추)
const : 상수
* 변하지 않는 변수 선언 시 사용 / 재할당 불가 (재선언 말고 재할당도 안됨 )
* 변수 한번만 선언!
같은 변수 여러번 선언하면 error!
변수 명명 규칙)
* 기호 $ _ 사용될 수 있음
카멜 표기법(camelCase) : 첫단어를 제외한 각단어의 첫 글자는 대문자로 작성 ex) myVeryLongName
변수를 많이 추가해도,
모던 자바스크립트 압축기(minifier)와 브라우저는 코드 최적화를 잘함.
즉, 변수를 추가한다고 해서 성능 이슈 X
-----------------------------------------------------------------------------------------------------------------------------------
2.5 자료형)
- 8가지 기본 자료형
- 자바스크립트의 변수는 자료형에 관계없이 모든 데이터일 수 있음 !
→ 동적 타입(dynamically typed)’ 언어
ex) O : 가능
// no error
let message = "hello";
message = 123456;
숫자형)
- 정수, 부동소수점 숫자 따로 구분하지 않음
- 위 종류 외에,
특수숫자값(Special Numeric Value) : Infinity, - Infinity, NaN 존재
Infinity : 직접 사용, 1/0 등 0 으로 나누면 가능
Nan : error 발생을 나타나는 값 , (부정확, 정의되지 않은 수학 연산 )
BigInt)
(2^(53)-1)(9007199254740991) 초과,
-(2^(53)-1) 미만 의 값은 '숫자형'으로 나타낼 수 없음 → BigInt 사용 [ex) 암호관련 작업]
사용) 정수 끝에 'n' 붙임
// 끝에 'n'이 붙으면 BigInt형 자료입니다.
const bigInt = 1234567890123456789012345678901234567890n;
문자형)
- 큰따옴표: "Hello"
- 작은따옴표: 'Hello'
- 역 따옴표(백틱, backtick): `Hello`
* 자바스크립트에선, 작은따옴표, 큰 따옴표를 구분하지 않는다 !!
백틱 사용) 백틱 안에, ${...} 로 감싸 넣어주면, 문자열 중간에 변수 사용 가능
* 주의, 작은 따옴표나 큰 따옴표 안에는 ${} 사용해도 오류남 !
// 변수를 문자열 중간에 삽입
alert( `Hello, ${name}!` ); // Hello, John!
// 표현식을 문자열 중간에 삽입
alert( `the result is ${1 + 2}` ); // the result is 3
boolean 형)
true or false
ex) 이렇게 사용할 경우, isGreater에 true 저장됨
let isGreater = 4 > 1;
null 값)
: 존재하지않는, 비어있는(empty), 알수없는(unknown) 값 나타냄
* 다른 언어와 다름 ! ( 다른 언어에선 널포인터, 존재하지 않는 객체에 대한 참조)로 사용
undefined 값)
: 값이 할당되지 않은 상태
변수는 선언 O, but 값 할당 X 일 때,
객체 Object)
객체형 이외 다른 자료형 : 원시(primitive) 자료형 :문자열 or 숫자 한 가지만 표현 가능
반면 객체는 데이터 컬렉션이나 복잡한 개체(entity)를 표현할 수 있음
심볼 symbol)
객체의 고유한 식별자(unique identifier)를 만들 때 사용
* typeof 연산자)
인수의 자료형을 반환
사용)
연산자: typeof x
함수: typeof(x)
* 라이브러리 함수 , -> object 로 출력됨
null -> object로 출력됨 (근데 이건 하위호환 관련한 오류, 실제론 object 아님)
함수 -> function 반환 (근데 사실 객체에 속함, 마찬가지 하위호환 관련 오류)
-----------------------------------------------------------------------------------------------------------------------------------
2.6 alert, prompt,confirm 상호작용)
: 브라우저 환경 에서 사용되는 최소한의 사용자 인터페이스 기능
1. alert )
: 메시지를 보여주는 작은 창(모달 창 modal window) 띄움
* 모달 창(modal window) : 페이지의 나머지 부분과 상호작용이 불가함.(모달 바깥쪽 클릭 불가)
alert("Hi");
2. prompt )
: 입력필드(input field), 텍스트 메시지 와 확인, 취소 버튼이 있는 모달창 띄움
+ 입력필드로 입력받은 문자열 return 받음
취소(cancle)할 경우, null 반환
result = prompt(텍스트메시지,[default]);
* default : 입력필드의 초기값 (= undefined)
3. confirm )
: 함수인자 매개변수로 받은 문자열과 , 확인, 취소버튼이 있는 모달창 띄움
확인 : true 리턴
취소&다른경우 : false 리턴
result = confirm(텍스트메시지);
* 주의 : 모달창이 띄워져 있는 동안은 스크립트의 실행 일시 중단 !
'웹 > Back End' 카테고리의 다른 글
API 생성 도구 Lombok, Swagger (2) | 2023.11.29 |
---|---|
DB서버 (1) | 2023.11.29 |
04. 관계형 데이터베이스 모델링 [ERD] (0) | 2022.01.17 |
DB (0) | 2021.08.12 |
web_ 비동기 프로그래밍 (0) | 2021.08.11 |