본문 바로가기
IT 공부/Javascript

javascript 기본. 자바스크립트란? 변수와 상수, 자료

by 쭈잇 2024. 12. 2.
반응형

자바스크립트란?

자바스크립트는 인터프리터 언어

-컴파일 언어 

: 코드 -> 컴파일 -> 실행 

-인터프리터 언어 (따로 포장하거나 가공하는 과정 없음)

바로 실행 => 버그가 덜 걸러지고 실행은 좀 느리지만 딱히 차이 없음

 

동적 자료형
숫자로 저장한 변수에 객체나 함수 등으로 바꿀 수 있음.

코딩이 자유롭지만, 에러가 날 가능성

=> 이를 보완한 자바스크립트 코드를 엄격한 과정을 거쳐 생성해주는 타임스크립트 언어가 있음


자바스크립트는 객체지향적인 언어지만, 자바랑은 또 색다름

프로토타입 기반, (클래스 방식보다도 강력)

일급 객체를 이용해서 함수형 프로그래밍을 할 수 있음

 

*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) 정적/동적타입

자바스크립트는 동적타입 언어.

특정 값이 할당된 변수에 그 외 다른 자료형 값을 넣는게 가능! 그래서 오류에 취약!

function getUpper(str){
returnstr.toUpperCase();
}
getUpper(1);

정적언어(컴파일언어)는 컴파일 단계(포장단계)에서 오류를 반환. 실행하기도 전에!

동적언어(인터프리터)는 과정 없이 바로 진행해서 사용자 컴퓨터에서 오류 발생이나 의도와 다른 것이 출력

 

문자열

* `(백틱) 개편한거 있음.

문자열 안에 탭이랑 줄바꿈 그대로 사용이 가능

`1 +2 = ${1+2} 이다`

 

연산자

x == y // 값비교
x === y // 자료형과 값이 같음
x != y // 값비교
c !== y // 자료형 또는 값이 다름

// 문자와 숫자 비교에서는, 문자를 숫자로 변환!!

'1' == 1
// 문자와 숫자 비교에서는, 문자를 숫자로 변환!!
// 원래 문자랑 숫자여서 아닌데,
// 얘가 둘 값이 같으니 알아서 둘 중 하나로 맞춰서 값비교

 

x + y
x += y (부수효과가 있음. 값이 변경 될수도)
* 부수효과는 위험함. 예상치 못한 결과가 나올 수도

let str3 = 'aa';
str3 += 'vv';
str3가 바뀌는

 

Number

Infinity 무한대 : typeof가 Number임!! + 도 있고 -도 있음

Nan ( Not a Number ) : 숫자가 아닌 것. typeof 는 Number 임

let a = 1 / 'asd';
console.log(a, typeof a);
Nan, 'number' //숫자가 아닌 것

a == Nan //false
a === Nan //false
isNaN(a) // true. 숫자가 아닐 시 true
Number.isNaN(a) //true. 보다 엄격한 버전

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

 

삼항연산자

let y = x ? 'o' : 'x';


기타 연산자
1. 쉼표 연산자

왼쪽부터 차례로 실행하고 마지막 것을 반환

let x = 1, y = 2, z= 3;
console.log(
( ++x, y += x, z*= y)
);

 

2. ?? null 병합 연산자

|| 와 다르게, null 또는 undefined만 대체함!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고) 얄팍한 코딩사전

반응형