일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- AI
- TypeScript
- vuetify
- vue.js
- bash
- nginx
- JavaScript
- C++
- Python
- 보안
- type
- 앙상블
- condition
- git
- BOJ
- npm
- var
- dotenv
- loop
- scss
- VUE
- leetcode
- machine learning
- property
- security
- Clone
- docker
- webpack
- generic
- C#
- Today
- Total
ice rabbit programming
[JS] JS의 간략한 소개와 데이터 타입(1) 본문
JavaScript는 원래 브라우저 등에 이용되는 스크립트 언어였으나, 요즘에는 IoT, 서버(Node.js) 등 광범위하게 쓰이고 있고, 사용 언어 순위에도 꾸준히 등장하고 있다. 요즘 개발자라면 웹은 거의 필수적으로 다루고, 관련 없는 개발을 하더라도 발은 한 번씩 담가보기 때문에 자바스크립트를 다들 조금씩은 해보게 된다. (자바와는 다르다)
필자는 학부 시절(이라 해봐야 2년 전) vue.js와 node.js를 이용한 웹 페이지를 제작할 때 좀 다루어 보았다. 다만 그 때는 여느 학생이 그렇듯이, 구현을 하는 것에 큰 목적을 두었어서 틈틈이 언어에 대해서 알아보기는 했으나 차근차근 공부하지는 못했었다. 그러다 이번 기회에 JavaScript 강의를 접하게 되어, 필자가 듣고 정리하며 이 글을 보는 여러분들에게 공유해보려 한다.
가장 큰 특징은 비동기라는 점이다. 원래 웹 브라우저와 같은 곳에서 사용했기 때문에, 동기로 동작하게 되면 수행하는 동안 웹 페이지가 멈추는 불상사가 발생한다. 그래서 태생적으로 비동기라는 특징을 가지게 되는데, 이러한 점이 처음에 언어를 배울 때 나름 장벽으로 작용하는 것 같다. 아마 아예 프로그래밍을 모르면 몰라도, 다른 언어들을 배우고 들어와서 생기는 장벽인 것 같다.
그러면, 시작해보자 JS
자바 스크립트는 주로 배우는 C/C++/Java 등과 다르게 변수를 생성할 때 타입을 명시하지 않는다.
var str = "Hello World!"; // string이 str에 담긴다.
var str2; // 아직 type이 정해지지 않은 변수
str2 = "Got JS"; // 이제 type이 string이 된다.
이런 식으로 모든 변수에는 var라는 키워드를 사용한다. 키워드는 사용하지 않지만 타입을 명시하지 않는 Python과 비슷하게 사용된다. 단 이 때 var는 C#의 var와는 다르다. C#의 var는 프로그래머가 명시하지 않아도 RValue의 값으로 변수를 쓰는 것이고 자바 스크립트의 var는 변수를 생성하는 것이다. 그래서 C#에서는 var str2;와 같은 구문은 성립하지 않는다. 자세한 내용은 C# 데이터 타입 참조.
각설하고, 그렇다고 데이터 타입이 없는 것은 아니다.
String, Number, Function, Array, Object, Boolean, null, undefined의 데이터 타입이 있다. Function과 undefined가 좀 특이한 개념이라고 볼 수 있다. 계속해서 타입을 다뤄 가면서 소개하도록 하겠다.
첫 번째로는 String 타입을 보자. String 타입은 큰 따옴표와 작은 따옴표를 사용할 수 있는데, Python과 같은 방식이다. 무슨 말이냐면, 큰 따옴표 내에 작은 따옴표가 들어가면 문자로 인식한다는 뜻이다.
var str3 = "she's girl"; // 큰 따옴표 안의 작은 따옴표는 가능
var str4 = 'she\'s girl'; // \n과 같은 용법
두 번째로는 Number 타입이다. Number 타입은 넣는 값에 따라 자동적으로 정수형과 실수형으로 정해 진다. 다만 사칙연산을 할 경우에는 손실이 없는 방향(정수->실수)으로 자동으로 연산이 이루어진다. 캐스팅이 필요한 C#이나 Java보다 좀 더 자유롭다고 볼 수 있다.
var n1 = 10;
var n2 = 10.5;
console.log(n1+n2); // 가능
세 번째는 Functionn 타입이다. type에 웬 Function? 이라고 생각할 수도 있겠는데, 함수를 변수에 담을 수 있는 것이다. C#의 Delegate 개념과 유사하다.
function sum(num1, num2) {
return num + num2;
}
var result = sum(10, 20);
function multiple(num3, num4) {
return num3*num4;
}
console.log(multiple(10,20));
함수 생성은 위의 두 가지 방법이 있다. 그래서 위에서 생성한 func1, func2을 인자로 넘겨줄 수도 있다! 익명 함수라는 개념도 있는데, 이는 콜백에서 자주 사용되는데, 이는 비동기와 관련된 이슈이니 추후에 다시 다루도록 하겠다.
'Development > JavaScript' 카테고리의 다른 글
[Node.js] npm cache 해결 (3) | 2020.09.27 |
---|---|
[JS] JavaScript의 기본 문법 (0) | 2020.06.06 |
[JS] 데이터 타입의 프로퍼티와 메소드 (0) | 2020.05.27 |
[JS] 자바스크립트의 데이터 타입(2) (0) | 2020.05.10 |
[JavaScript] Eval과 getOwnPropertyNames() (0) | 2020.04.15 |