![[자바스크립트(Java Script)]2. 자바스크립트 문법](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255B%25EC%259E%2590%25EB%25B0%2594%25EC%258A%25A4%25ED%2581%25AC%25EB%25A6%25BD%25ED%258A%25B8%28Java%2520Script%29%255D2.%2520%25EC%259E%2590%25EB%25B0%2594%25EC%258A%25A4%25ED%2581%25AC%25EB%25A6%25BD%25ED%258A%25B8%2520%25EB%25AC%25B8%25EB%25B2%2595%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3Dsson17&w=2048&q=75)
1. 변수 선언과 기본 타입
JavaScript에서는
let
, const
, var
를 사용해 변수를 선언합니다. 여기서는 주로 let
이 사용되었습니다.//변수
//가장 최상단에 적을 수 있는 것들을 1급 객체 (자바에서는 1급 객체는 클래스 밖에 없다)
let n1 = 1;//Number 타입
let n2= 10.5;//Double 타입
let s1 ="문자열";//String 타입
let s2 ='문자열';
let s3 =`문자열 ${n1}`
let b1 =true; //bool
let u1 =null; //null 타입
let u2; // undefied 타입
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. 컬렉션과 오브젝트
JavaScript에서는 배열과 객체를 사용하여 데이터를 구조화할 수 있습니다.
// 컬렉션, 오브젝트
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. 함수 선언과 호출
JavaScript에서 함수는 여러 방식으로 선언할 수 있습니다.
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. 람다식 (Arrow Functions)
람다식은 ES6에서 도입된 간결한 함수 표현 방식입니다. 화살표 함수(Arrow Functions)라고도 합니다.
//람다식
// function에 이름이 없음 : 익명함수
let m1 = function () {
console.log("m1 호출됨");
};
m1();
// Lamda 식: 이름이 없는 익명함수
let m11 = ()=>{
console.log("m11 호출됨");
};
m11();
// Lamda Statement
let m2 = (n1, n2) => {
console.log(`${n1}, ${n2}`);
};
m2(1,3);
//Lamda Expression
let m3 = (n1, n2) =>{
return n1 + n2;
};
let r1 = m3(5,6);
console.log(r1);
// Lamda Expression
let m33 = (n1, n2) => n1 + n2;
let r2 = m33(1,5);
console.log(r2);
// Lamda Statement
// let m333 = (n1, n2) => console.log(n1+n2);
// m333(10,50);
// Lamda Statement
let m333 = (n1, n2) => {console.log(n1+n2)};
m333(10,50);
let r3 = m333(10,50);
console.log(r3);
// Lamda 표현식 (1줄,2줄이상)
let k1 = () => 5;
let k2 = () => {
return 5;
};
// Lamda 문장
let k3 = () => {
console.log(5);
};
4.1 익명 함수와 람다식의 기본 형태
// 익명 함수(Anonymous Function)
let m1 = function() {
console.log("m1 호출됨");
};
// 람다식(Arrow Function)
let m11 = () => {
console.log("m11 호출됨");
};
4.2 람다 Statement와 Expression의 차이
람다 함수는 Statement(문장)와 Expression(표현식) 두 가지 형태로 작성할 수 있습니다.
람다 Statement (문장)
- 중괄호
{}
를 사용
return
키워드가 필요할 수 있음
- 여러 줄의 코드 작성 가능
- 값을 반환하지 않는 실행문에 주로 사용
// 람다 Statement 예시
let m2 = (n1, n2) => {
console.log(`${n1}, ${n2}`);
};
let m333 = (n1, n2) => {
console.log(n1 + n2);
};
람다 Expression (표현식)
- 중괄호
{}
를 생략
return
키워드 생략 (암시적 반환)
- 한 줄로 표현 가능한 코드만 작성
- 값을 반환하는 간결한 함수에 주로 사용
// 람다 Expression 예시
let m33 = (n1, n2) => n1 + n2; // 암시적 반환
let k1 = () => 5; // 5를 반환
4.3 람다식 사용 예시 정리
// 기본 익명 함수
let m1 = function() {
console.log("m1 호출됨");
};
// 기본 람다식
let m11 = () => {
console.log("m11 호출됨");
};
// 매개변수가 있는 람다 Statement
let m2 = (n1, n2) => {
console.log(`${n1}, ${n2}`);
};
// 반환값이 있는 람다 Statement
let m3 = (n1, n2) => {
return n1 + n2;
};
// 람다 Expression (암시적 반환)
let m33 = (n1, n2) => n1 + n2;
// 람다 Statement (반환값 없음)
let m333 = (n1, n2) => {
console.log(n1 + n2);
};
// 단일 값 반환 람다 Expression
let k1 = () => 5;
// 단일 값 반환 람다 Statement
let k2 = () => {
return 5;
};
// 값을 반환하지 않는 람다 Statement
let k3 = () => {
console.log(5);
};
5. 람다식의 특징과 장점
- 간결한 문법: 함수 선언을 더 짧고 읽기 쉽게 만듭니다.
- this 바인딩: 일반 함수와 달리 자신만의
this
를 생성하지 않고 외부 스코프의this
를 그대로 사용합니다.
- 암시적 반환: 중괄호 없이 한 줄로 작성할 경우 자동으로 값을 반환합니다.
- 선택적 괄호: 매개변수가 하나만 있으면 괄호를 생략할 수 있습니다 (예:
x => x * x
).
6. 람다 Expression vs Statement 정리
구분 | 람다 Expression | 람다 Statement |
문법 | () => 값 | () => { 문장들... } |
반환 | 암시적 반환 (return 생략) | 명시적 반환 (return 필요) |
사용 | 간단한 계산식, 값 반환 | 복잡한 로직, 여러 줄 코드 |
예시 | x => x * 2 | x => { let y = x * 2; return y; }
|
7. 중괄호 없는 Statement 람다식 사용 지양
람다식을 사용할 때, 중괄호
{}
를 생략하는 것은 **Expression(표현식)**에서만 권장됩니다. 하지만 **Statement(문장)**에서 중괄호 없이 작성하는 것은 문제가 될 수 있습니다.중괄호 없는 Statement 람다식 문제점
아래와 같이 중괄호
{}
없이 람다식을 작성하면 실행은 되지만, 일부 환경(Dart, TypeScript, 다른 JS 인터프리터 등)에서는 오류가 발생할 수 있습니다.// Lamda Statement
// let m333 = (n1, n2) => console.log(n1+n2);
// m333(10,50);
위 코드에서는
console.log(n1 + n2);
가 실행되지만, 명확한 표현 방식이 아니기 때문에 사용을 지양하는 것이 좋습니다.안전한 람다 Statement 작성법
람다 Statement는 반드시 중괄호
{}
를 포함하여 작성하는 것이 권장됩니다.jsx
복사편집
// 올바른 람다 Statement (중괄호 사용)
let m333 = (n1, n2) => {
console.log(n1 + n2);
};
m333(10, 50);
이렇게 작성하면 모든 환경에서 일관된 동작을 보장할 수 있으며, 가독성도 높아집니다.
중괄호 없는 표현은 오직 Expression에서만!
jsx
복사편집
// 올바른 람다 Expression (암시적 반환)
let sum = (n1, n2) => n1 + n2;
console.log(sum(10, 20)); // 30
즉, 값을 반환하는 경우에만 중괄호 없이 사용하는 것이 좋고, 그렇지 않다면 항상 중괄호를 사용하는 것이 안정적인 코드 스타일입니다.
Share article