1. 변수
- JavaScript는 변수, 함수들이 모두 레퍼런스 자료형 : 실행 시에 결정됨
- Interpreter의 특성 : 동적 할당
- 변수 선언 : let → 변수명 = value; 형태로 선언 후, 실행 시 자동으로 변수 타입을 결정
- Number
- String
- 큰따옴표(””), 작은따옴표(’’), backtick(``) 사용
- backtick 사용 시 변수를 바인딩할 수 있음 (${변수명}) : 용이하므로 자주 사용
- bool
- null
- undefined
- 변수명만 선언하고 값을 대입하지 않으면 null이 아닌 undefined 형으로 인식
- null이라는 값을 직접 대입해야 null형으로 변환됨
// 변수
// 가장 최상단에 적을 수 있는 것들 : 1급 객체 >> 매개변수로 전달이 가능
// 자바의 1급 객체 : 클래스
let n1 = 1; // Number 타입
let n2 = 10.5;
let s1 = "문자열"; // String 타입
let s2 = '문자열';
let s3 = `문자열 ${n1}`;
let b1 = true; // boolean 타입 (bool)
let u1 = null; // null 타입
let u2; // undefined 타입
console.log(n1);
console.log(n2);
console.log(s1);
console.log(s2);
console.log(s3);
console.log(b1);
console.log(u1);
console.log(u2);

2. Collection & Object
- 같은 자료형의 모임 : Collection → 대괄호([])로 묶어서 표현
- Collection 내부 요소들을 참조할 때 인덱스 (index) 사용
- Object : Java의 클래스와 비슷
- 중괄호({}) 사용
- 자료형은 지정하지 않음
- 내부 멤버의 값을 넣을 때는 key : value의 형식으로 지정
- 마지막에 세미콜론(;) 추가
- ‘오브젝트명.멤버’ 의 형식으로 Object 내 멤버 참조 가능
// 컬렉션, 오브젝트
let list = [1, 2, 3, 4];
let hobby = ['축구', '농구'];
let user = {
id: 1,
username: 'ssar',
hobby: hobby
};
user.username = "cos";
hobby[0] = "탁구";
console.log(user.id);
console.log(user.username);
console.log(user.hobby);
console.log(user.hobby[0]);

3. Function
- 자바와 다르게, 함수를 단독으로 선언하여 사용 가능
- 1급 객체의 특징
- 함수, 매개변수, 리턴값 전부 자료형 선언 필요 없음
- 레퍼런스 자료형
- 리턴값을 반환하는 함수는 새 변수에 값을 대입할 수 있음
- 자바와 동일
// 함수
function m1() {
console.log("m1 호출됨");
}
function m2(n1, n2) {
console.log(`${n1}, ${n2}`);
}
function m3() {
return 10;
}
m1();
m2(1, 2);
let r = m3();
console.log("r", r);

4. Lambda Function
1. 익명 함수 & Lambda
- JavaScript에서는 함수명을 생략할 수 있음
- function() { }의 형태를 익명 함수 (Anonymous Function)이라고 함
- 이름이 없는 익명 함수를 람다식 (Lambda Function)이라고 함
- 함수 내의 리턴 형식에 따라 람다식을 부르는 형식이 다름
- 리턴 값이 없이 바로 실행하는 함수 : Lambda Statement (람다 문장)
- 리턴 값이 존재하여 변수 등에 담을 수 있는 함수 : Lambda Expression (람다 표현식)
2. Lambda Statement & Expression
- let 변수명 = () ⇒ { return result; } : Lambda Expression (람다 표현식)
- let 변수명 = () ⇒ { console.log(result); } : Lambda Statement (람다 문장)
- 리턴값이 없는 함수도 JavaScript에서는 변수 내에 저장할 수 있음
- let 변수명 = () ⇒ result; : Lambda Expression (람다 표현식)
- let 변수명 = () ⇒ console.log(result); : Lambda Statement(람다 문장)
- JavaScript에서 지원하는 문법 : 비추천 (헷갈릴 수 있음)
// 람다 표현식
// function m1() {
// console.log("m1 호출됨");
// }
// function m2(n1, n2) {
// console.log(`${n1}, ${n2}`);
// }
// function m3() {
// return 10;
// }
// anonymous function (익명 함수) : 사용 X
let m1 = function () {
console.log("m1 호출됨");
}
m1();
// lambda function (function 생략 후 => 추가) : 이름이 없는 익명 함수
let m11 = () => {
console.log("m11 호출됨");
}
m11();
// lambda statement : has no return (direct execute)
// lambda expression : has return
// lambda statement
let m2 = (n1, n2) => {
console.log(`${n1}, ${n2}`);
}
m2(1, 2);
// lambda expression
let m3 = (n1, n2) => {
return n1 + n2;
}
let r1 = m3(5, 6);
console.log(r1);
// lambda expression
let m33 = (n1, n2) => n1 + n2;
let r2 = m33(1, 5);
console.log(r2);
// lambda statement
let m333 = (n1, n2) => { console.log(n1 + n2) };
let r3 = m333(10, 50);

Share article