JavaScript 기본 문법 (변수, number , String, Boolean)
JavaScript 구문 작성
세미콜론은 반드시 붙여야 하는 것은 아니다.
console.log("Hello")
console.log("Node.js");
단, 두 문장 이상을 한 라인에 입력하고자 할 때는 세미콜론을 붙여 주어야 자바스크립트 엔진이 별도 문장임을 인지할 수 있다
주석은 한 줄 주석 (//), 여러 줄 주석 (/* ~ */) 모두 가능
// 한 줄 주석입니다.
/*
여러 줄 주석입니다.
*/
Java와 마찬가지로 CamelCase가 기본
// CamelCase is norm
if (fooBar == bazBat) {
console.log(fooBar, "is", bazBat);
}
객체의 속성, 메서드에 접근할 때는 . 으로 접근
someObject.someMethod();
JavaScript는 객체 기반 언어(Object-Base Language)로 객체는 프로퍼티(Property: 데이터)와 메서드(Method: 실행 명령)으로 이루어져 있다.
JavaScript 변수와 상수 : var, let vs const
let : mutable (변경 가능)
-변수에 재 할당이 가능
const : immutable (변경 불가)
-변수에 재 할당이 불가 -> 상수로 사용 가능
-재 할당이 불가하므로 선언과 할당을 함께 해주어야 한다
var : ES6 이전, JavaScript 에서 사용하던 변수 할당을 위한 키워드
- ES6 이상의 환경에서는 var 사용을 지양하고 let과 const를 활용할 것
var testVar = "var";
let testLet = "let";
const testConst = "const";
testVar = "var changed";
testLet = "let changed";
testConst = "const changed"; // -> Error: Cannot Change
변수 이름 명명 규칙
- 알파벳(A-Z, a-z), 숫자(0-9), 밑줄(_), 달러($) 기호를 사용할 수 있음
- 숫자로 시작해서는 안됨
변수의 데이터타입은 선언시 지정하는 것이 아니라 할당과 함께 결정된다
- 변수에 담긴 데이터의 타입을 확인하고자 하면 typeof 키워드를 이용한다
let v = "This is String";
console.log("v is", typeof v);
v = 2018;
console.log("v is", typeof v);
JavaScript의 기본 데이터타입은
- Number, String, Boolean
Number in JavaScript
숫자를 표현하거나 산술 연산을 하는 데 사용되는 데이터타입
- 기본적으로는 산술 연산(+, -, *, / 등)이 가능
- Math 내장 객체를 이용하여 수학 함수를 이용한 결과값을 받을 때 활용
let n1 = 5; // Literal
let n2 = Number(5); // Number 객체
console.log(typeof n1, typeof n2);
console.log(Math.round(Math.PI));
console.log(Math.min(7, 3, 5, 2, 9, 13), Math.max(7, 3, 5, 2, 9, 13));
console.log(Math.round(3.578), Math.floor(3.578));
Casting
자바스크립트는 변수 선언시 데이터타입을 지정하지 않음
- 문자열 데이터로 숫자를 표현하는 경우(특히 외부 파라미터를 이용한 전송)가 많음
-> 데이터 형 변환이 필요한 경우 많음
- parseInt(), parseFloat()를 이용하면 Number 형으로 변환 가능
console.log(parseInt("011")); // 11
console.log(parseInt("011", 2)); // 3: 진법 변환
console.log(parseInt("123.456")); // 123: 정수 형태만 반환한다
console.log(parseFloat("123.456")); // 123.456
숫자로 변환할 수 없는 형태의 문자열을 캐스팅할 경우, NaN(Not a Number)를 반환
console.log(parseFloat("a123.456")); // NaN
수치형 데이터가 NaN인지 확인하려면 isNaN() 내장 객체 함수를 이용
let v = parseInt("abcde");
console.log(typeof v, isNaN(v));
Infinity
산술 연산 결과가 무한대임을 표시하는 자바스크립트의 표현식
- 양의 무한대(Infinity)와 음의 무한대(-Infinity)로 구분
console.log(1 / 0); // Infinity
console.log(-1 / 0); // -Infinity
산술 결과 혹은 전달된 인자값이 유한한 형태를 가진 것인지 검증하기 위해서는 isFinite() 내장 객체 함수를 활용
- 인자 값이 숫자이면서 유한하면 true
- 인자 값이 NaN, Infinity, -Infinity면 false
console.log(isFinite(1/0)); // false
console.log(isFinite(2018)); // true
console.log(isFinite(NaN)); // false
String in JavaScript
String : 문자열을 표현하는데 사용되는 데이터 타입
- JavaScript의 문자열은 유니코드 문자들의 연결 구조이기도 하다
= 문자 하나하나가 연결되어 하나의 표현을 이루는 데이터
let s1 = "JavaScript";
let s2 = String("JavaScript");
console.log(typeof s1, typeof s2);
Property : length
console.log("Hello".length);
자동 형변환 : JavaScript에서는 String과 다른 타입들을 합칠 때, String으로 자동 변환된다
String 문자열 추출
- charAt(index) : 문자열 내 특정 인덱스의 문자를 추출
- substr(from, length) : 문자열 내의 from 인덱스부터 lengh 길이만큼의 문자열을 추출
- substring(from, end) : 문자열 내의 from 인덱스부터 end 인덱스까지의 문자열을 추출
const s = "Modern JavaScript";
console.log(s.charAt(7)); // J
console.log(s.substr(7, 10)); // JavaScript
console.log(s.substring(7, 17)); // JavaScript
String 문자열 치환
- replace(searchValue, replaceValue) : 문자열 내 searchValue를 replaceValue로 치환
const s = "Modern JavaScript";
console.log(s.replace("JavaScript", "JS")); // Modern JS
String 화이트 스페이스 제거
- trim() : 문자열의 시작과 끝의 빈 문자 제거
const s = " Need to be trimmed ";
console.log(s.trim());
Boolean과 ==, ===
Boolean : 논리값 true / false를 다루기 위한 데이터 타입
- Boolean()을 이용하여 논리 검증을 수행할 수 있다
console.log(Boolean("JavaScript")); // true
console.log(Boolean("")); // false
==와 ===
* == : 타입과 상관 없이 값을 비교 (Equal Operator)
* === : 값과 함께 타입도 함께 비교 (Strict Equal Operator)
console.log(123 == "123"); // true
console.log(123 === "123"); // false
null과 undefined
- JavaScript는 값이 없음을 나타내는 null과 초기화(선언)되지 않은 경우를 나타내는 undefined라는 특별한 데이터 타입이 있음
- null : 개발자가 의도적으로 빈 값을 할당한 경우
- undefined : 할당 자체가 이루어지지 않은 것
let v1, v2 = null;
console.log(v1 == v2); // true
console.log(v1 === v2); // false
console.log(typeof v1, typeof v2); // undefined object