자바스크립트란?
자바스크립트는 인터프리터 언어
-컴파일 언어
: 코드 -> 컴파일 -> 실행
-인터프리터 언어 (따로 포장하거나 가공하는 과정 없음)
바로 실행 => 버그가 덜 걸러지고 실행은 좀 느리지만 딱히 차이 없음
동적 자료형
숫자로 저장한 변수에 객체나 함수 등으로 바꿀 수 있음.
코딩이 자유롭지만, 에러가 날 가능성
=> 이를 보완한 자바스크립트 코드를 엄격한 과정을 거쳐 생성해주는 타임스크립트 언어가 있음
자바스크립트는 객체지향적인 언어지만, 자바랑은 또 색다름
프로토타입 기반, (클래스 방식보다도 강력)
일급 객체를 이용해서 함수형 프로그래밍을 할 수 있음
*Babel (코드 변환 소프트웨어)
최신 문법인 자바스크립트 코드를 예전 버전으로 자동으로 번역해서 사용할 수 있어
어떤 버전에서 나온 건지 상관없이 마음껏 쓸 수 있음. 오👀
변수와 상수
변수
(var는 요즘 안씀)
let x=1;
let y-1;
=> 변수영역에 x,y 생기고 , 메모리영역에 undefined, 1 생김. x, y는 1을 다 가리킴.
(undefined는 항상 생성된다함)
* C언어와 달리 메모리상 가리키는 위치가 변경됨.
(기존 위치에 새 값을 넣는게 아님-> 차지하는 자리가 다른 크기의(자료형이 다른) 데이터가 재할당될 수 있어서!! )
let x = 1;
let x= 2;
=>불가능하다!! x라는 식별자가 이미 있으니까 안됨(var는 가능했었음)
상수
const a = 1; (선언과 동시에 값도 넣어줘야함) 바뀔 수 없는 상수
컴퓨터가 일하는 방식
1) CPU : 일하는 사람 (컴퓨터 뇌), 작업을 진행하는 주체
2) 보조기억장치 (SSD, HDD) : 서랍. 저장공간은 넓지만 접근속도는 느림.
=> 소프트웨어(코드)가 저장되는 곳
3) 메모리(RAM) : 책상위 공간. 저장공간 좁고, 접근 속도 빠름
사람이(CPU)가 서랍(보조기억장치)에 든 데이터를 꺼내 올려두고 작업하는 공간
변수, 상수를 비롯한 데이터들이 이곳에서 만들어지고 사용됨
** 메모리를 효율적으로 사용하기 위한 지식과 노력 필요!
자료형( 데이터 종류)
1) 원시 자료형 ( 값 하나만 담는 단순 자료형)
boolean, number, undefined, null
undefined: 뭔지 모른 값.(아직 할당 되지 않은), 반환하는 값이 없는 그런 코드 -> undefined 나옴
null : 비어있다는 값. 의도적인 빈 값. /
typeof 하면 객체를 반환! (그래서 진짜 객체랑 null 이랑 typeof로는 비교불가
=> x === null 이렇게 판단)
2) 정적/동적타입
자바스크립트는 동적타입 언어.
특정 값이 할당된 변수에 그 외 다른 자료형 값을 넣는게 가능! 그래서 오류에 취약!
정적언어(컴파일언어)는 컴파일 단계(포장단계)에서 오류를 반환. 실행하기도 전에!
동적언어(인터프리터)는 과정 없이 바로 진행해서 사용자 컴퓨터에서 오류 발생이나 의도와 다른 것이 출력
문자열
* `(백틱) 개편한거 있음.
문자열 안에 탭이랑 줄바꿈 그대로 사용이 가능
`1 +2 = ${1+2} 이다`
연산자
// 문자와 숫자 비교에서는, 문자를 숫자로 변환!!
Number
Infinity 무한대 : typeof가 Number임!! + 도 있고 -도 있음
Nan ( Not a Number ) : 숫자가 아닌 것. typeof 는 Number 임
Nan 체크는 isNan 이나 Number.isNan() 사용
|| 연산자 : 둘중 하나만 true
*** 값이 빈 문자열이 아니면 true 로 평가됨!!
값 || true : 값
값 || false : 값
true || 값 : true
false || 값 : 값
값 A || 값 B : 값A
&&연산자 : 둘다 같아야만 true or false
false && 값 : false
true && 값 : 값
값 && false : false
값 && true : true
값A && 값B : 값B
삼항연산자
기타 연산자
1. 쉼표 연산자
왼쪽부터 차례로 실행하고 마지막 것을 반환
2. ?? null 병합 연산자
|| 와 다르게, null 또는 undefined만 대체함!!
참고) 얄팍한 코딩사전
'IT 공부 > Javascript' 카테고리의 다른 글
npm 기초 (2) | 2024.12.10 |
---|---|
자바스크립트 파일, script defer, async (1) | 2024.12.09 |
자바스크립트 기본 객체, 배열, 블록문, 스코프 (3) | 2024.12.02 |