Java Script - 혼자 공부하는 법 / JS 기초 정리 1
얼마전에 받은 혼자 공부하는 자바스크립스트 책
이걸로 완독하고 자바스크립트 이해하기!
자바스크립트(Java Script)는 뭘까?
: 웹 브라우저에서 사용하는 프로그래밍 언어.
원래 넷스케이프의 브렌던 아이크에 의해 모카라는 이름으로 만들어졌던 언어인데,
모카는 라이브스크립트라는 이름으로 다시(?) 개발 됐고
이후, 넷스케이프가 썬 마이크로시스템즈와 함께 개발해 나가면서 자바스크립트라는 이름을 붙였다고 한다.
자바스크립트의 표준명칭 - ECMAScript
참고로 자바랑 자바스크립트는 전혀 다른 언어입니다*
정적언어와 동적언어
정적언어로는 C, C++, C#, JAVA등이 있고
동전언어로는 JS, Rudy, Python이 있습니다.
검색해 보는 과정에서 장단점에 대해 들었는데,
동적언어는 코딩하기가 쉬운 반면 컴파일시에 에러가 안나고 런타임에 에러가 난다고 한다.
그래서 코드가 복잡해지면 문제가 생 길 수 있다고 한다.
-
소스코드(Input) -> 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 -> 실행파일(Output) -> 실행 ...............................컴파일타임...........................................................런타임................... |
컴파일타임은 실행파일이 만들어지기 전까지의 과정을 말하고
런타임은 실행파일이 실행 된 후의 시간대를 런타임이라고 말한다.
정적타입 언어는 컴파일시 변수의 타입이 결정되는 언어라고 한다. (static)
장점:
타입 에러로 인한 문제를 컴파일 타임에 해결할 수 있기 때문에 안정성이 높다.
컴파일타임에 미리 타입을 결정하기때문에 실행속도가 빠르다.
단점:
컴파일 타임에 타입에 대한 제한으로 코드 작성시 유연함이 떨어진다.
동적타입 언어는 런타임 시 자료형이 결정되는 언어이다. (dynamic)
장점:
소스코드 작성시 타입에 대한 제한이 없기때문에 유연성이 높다. 코드작성이 효율이 높다.
단점:
타입에 대한 리스크를 런타임에 감당해야한다. 스펠링에러로 인한 실수도 런타임에 감당해야한다
(그러니까 오타내지말것ㅠㅠ)
형 변환
함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동변환된다.
이런과정을 "형 변환(type conversion)"이라고 한다.
기본 자료형으로는
문자열 자료형 / 숫자 자료형 / 불 자료형 이 있다.
문자열 자료형 (string)
JS에서는 문자열을 생성할때 큰따옴표 "" 나 작은따옴표''를 사용하여 생성한다.
두 방법 모두 사용이 가능한데, 회사의 규칙이나 팀의 규칙에 의해 어떤걸 사용할지 정해질 수도 있고,
협업시 저마다 다른 방법을 사용하여 헷갈릴 수 있으니 한가지로 정해서 사용하는 것이 좋다.
게다가 JS에서는 두방법 다 상관없지만 다른 언어에서는 큰따옴표이냐 작은따옴표이냐에 따라 의미가 달라 진다고 하니
주의하여 사용하는 것이 좋겠다.
두 따옴표를 모두 사용해야 할 경우!
나는 오늘 '저녁에 뭐 먹을까?'라고 생각했다. 라는 문장을 표현할때
"나는 오늘 '저녁에 뭐 먹을까?'라고 생각했다." or '나는 오늘 "저녁에 뭐 먹을까?"라고 생각했다.' 라고 해야한다.
큰따옴표가 문자열을 둘러싸고있다면 안에는 작은따옴표를, 작은따옴표가 문자열을 둘러싸고 있다면 안에는 큰따옴표를 이용해야한다.
혹은 이스케이프 문자 \ 를 사용하는 것이다. (엔터키 위의 버튼을 누르면 이스케이프 문자가 나온다.)
"나는 오늘 \"저녁에 뭐 먹을까?\"라고 생각했다." 이런식으로 이스케이프문자와 함께 쓸면 된다.
\n : 줄바꿈
\t : 탭
\\ : 역슬래시 (\) 이 의미 자체를 뜻함
숫자 자료형 (Number)
소수점이 있는 숫자와 없는 숫자 모두 자료형으로 인식한다.
숫자연산자에는 + - * / 그리고 % 가 있다.
참고로 %는 나머지 연산자이다.
ex) 10 % 3 은 나머지가 1이다.
불 자료형 (Boolean)
불은 불이라고 불리기도 하지만 불린이라고 불리기도한다.
불 자료형은 true, false 2가지가 있다.
불은 단순하게 true와 false를 입력하면 만들 수 있고
어떤 두 대상을 비교할 수 있는 비교 연산자를 사용해도 불을 만들 수 있다.
=== 양쪽이 같다.
!== 양쪽이 다르다.
> 왼쪽이 더 크다.
< 오른쪽이 더 크다.
>= 왼쪽이 더 크거나 같다.
<= 오른쪽이 더 크거나 같다.
여기서 == 혹은 !=을 본적이 있다면 주의하는 것이 좋다. 다른언어에서도 쓰이지만, 자바스크립트에서는 == , != 은 값이 같은지를 비교하고 === , !==은 값은 물론 자료형이 같은지도 비교하는 연산자이기 때문이다. |
비교연사자는 숫자는 물론 문자열 자료형도 비교할 수 있다.
문자열 자료형의 비교는 사전의 순서대로 ㄱ < ㄴ < ㄷ 으로 참을 표현한다.
예로 들면 '고구마' < ' 바나나' 는 true가 되고 '고구마' > '바나나' 는 false가 된다.
...
이쯤되면 ! 느낌표가 부정적인 의미라는 것을 알 수 있다.
!를 이용해 불 자료형에도 연산자를 적용할 수 있다.
!true -> false !참은 거짓으로
!false -> true !거짓은 참으로
불 자료형에는 비교 연산자와 부정 연산자 말고도 논리합/논리곱 연산자가 있다.
논리합은 || A 또는 B가 true일 때 즉, 하나만 true여도 결과는 true가 나온다.
좌 | 우 | 결과 |
true | true | true |
true | false | true |
false | true | true |
false | false | false |
논리곱은 && A 그리고 B 모두 true일 때만 true값이 나온다.
좌 | 우 | 결과 |
true | true | true |
true | false | false |
false | true | false |
false | false | false |
자료형 검사
어떤 자료형인지 확인할 때
자바스크립트는 숫자, 문자열, 불 같은 자료형을 확인 할 때 typeof 연산자를 사용한다.
typeof 연산자도 단항연산자이다.
typeof 연산자는 결과로 8가지중 하나를 출력한다.
string, number, boolean, undefined, function, object, symbol, bigint
템플릿 문자열
템플릿 문자열은 백틱 ` 기호로 감싸 만든다. 문자열 내부에 `${...}` 기호를 사용하여 표현식을 넣으면 표현식이 문자열 안에서 계산된다.
ex) console.log(`표현식 273 + 52의 값은 ${273 + 52}`이다!)
-> 표현식 273 + 52의 값은 325이다!
undefined
undefined는 원시값(Primitive Type)으로, 선언한 후에 값을 할당하지 않은 변수나 값이 주어지지 않은 인수에 자동으로 할당된다. 이 값은 전역 객체의 속성 중 하나로, 전역 스코프에서의 변수이기도 하다. 따라서 undefined 변수의 초기 값은 undefined 원시 값이다.
아래의 경우에 변수가 undefined를 반환한다.
- 값을 할당하지 않은 변수
- 메서드와 선언에서 변수가 할당받지 않은 경우
- 함수가 값을 return 하지 않았을 때
null
null은 원시값(Primitive Type) 중 하나로, 어떤 값이 의도적으로 비어있음을 표현한다. undefined는 값이 지정되지 않은 경우를 의미하지만, null의 경우에는 해당 변수가 어떤 객체도 가리키고 있지 않다는 것을 의미한다.
undefined 와 null에 대한 내용은 아래 주소를 참고하면 된다.
undefined와 null의 차이점을 설명하세요 | 2ssue's dev note
undefined와 null의 차이점을 설명하세요 undefined은 변수를 선언하고 값을 할당하지 않은 상태, null은 변수를 선언하고 빈 값을 할당한 상태(빈 객체)이다. 즉, undefined는 자료형이 없는 상태이다. 따
2ssue.github.io
[JavaScript] undefined 타입 & null 타입 차이점 - 하나몬
null과 undefined를 보이는 그대로 해석하면 ‘빈 값’과 ‘없는 값’을 의미하는 것처럼 보이지만 사실 큰 차이점이 있다. ❗️undefined와 null의 공통점 둘다 각각의 타입명(undefined, null)의 값이 유일
hanamon.kr
다음에는 또 다른 기초 정리를 올려볼까 한다.