2 minute read

변수

​ : 어떤 값(데이터)를 담는 저장소(메모리)의 이름. 상황에 따라 변할 수 있는 값. 간단히 말하면, 값의 위치를 가리키는 상징적인 이름이다.

let mymame = '안승호'
// 여기서 등호(=)는 수학적 기호와 다른 의미로 myname에 '안승호'라는 값을 대입(assign)하는 것이다.
// let으로 myname이라는 변수를 "선언"하고 myname에 '안승호'라는 데이터를 "할당" 했다고 한다. 

변수를 사용하려면 우선 ‘선언’을 해야한다. 변수를 선언하는 키워드로는 let, const, var가 있다.

  • let, const, var의 차이점

ES6부터 let와 const가 도입되었고, 필요에 맞게 변수를 정의하는 것이 더 용이해졌다. ES6이전엔 var만 존재했고 여러 단점들 중 대표적으로 블록 레벨 스코프*를 지원하지 않아 의도치않게 전역 변수가 선언되어 부작용이 발생되곤 했다. var와 let의 가장 큰 차이점은 var와 다르게 let은 변수가 선언된 블록과 그 하위 블록 내에서만 사용할 수 있다. 이에 블록 레벨 스코프를 지원하는 let와 const가 새롭게 추가됐고, let는 재할당이 가능한 키워드로, const는 재할당이 불가능한 키워드로 사용되고 있다.

어느것을 쓰느냐는 지금도 많은 논란이 되고 있지만, 어떤 차이가 있는지는 확실하게 구분할 줄 알고 넘어가야 현장에서 사용되고 있는 키워드를 활용할 수 있을것이다.

// 아래 예를 보자
var a = 100
function print() {
    var a = 10;
    console.log(a);
}
print(); // 10

// print 함수 앞에 선언한 a와 print함수 안에 선언한 a는 각자 다른 유효범위를 갖는다. 

타입

​ : 값의 종류를 말한다.

구분 데이터 타입 설명
원시 타입 숫자(Number) 타입 숫자. 정수와 실수 구분없이 하나의 숫자 타입만 존재
. 문자열(String) 문자열
. 불리언(Boolean) 논리적 참(true)와 거짓(false)를 구분
. undefined 선언된 변수에 암묵적으로 할당되는 값
. null 값이 없다는 것을 표현할때 사용하는 값
. 심벌(symbol) 추후에 설명
객체타입   객체, 함수, 배열 등…

서로 섞인(compound)타입도 있다. (자료형)

함수

: 특정 기능을 수행하는 코드의 묶음 단위. 좀 더 정확하게 표현하자면 특정 기능을 수행하는 기능의 과정을 코드로 구현하고 블록으로 감싸서 하나의 실행단위로 정의한 것이다. 함수는 항상 출력값을 반환한다

함수는 필요할 때 여러번 호출할 수 있다. 동시에 같은 코드를 여러번 재작성 해야하는 것이 아니라 미리 정의된 함수를 재사용한 다는 측면에서 매우 유용하다.
let x = 0;
let y = 0;
let result = 0;

x = 1;
y = 2;
result = x + y; // 3

x = 3
y = 4
result = x + y // 7

x = 5
y = 6
result = x = y // 11

이렇게 같은 작업을 반복해서 수행해야 할 때, 함수를 사용하면

function add(x,y){
  return x = y;
}
let result = 0;

result = add(1,2) // 3
result = add(3,4) // 7
result = add(5,6) // 11

이렇게 간결하게 된다.

이렇게 코드 중복을 억제하고 재사용성을 높이는 함수는 유지보수의 편의성을 높이고 실수를 줄여 코드의 신뢰성을 높이는 효과를 얻을 수 있다. 또한 코드의 가독성을 높이는 효과도 있다.

함수의 정의

함수를 정의하는 방식에는 크게 4가지가 있다.

  • 함수 선언식

    기본적인 함수 선언 방식 / 함수를 선언과 동시에 정의한다.

function getTriangleArea(base, height) {
  let triangleArea = (base, height) / 2;
	return triangleArea;
}
  • 함수 표현식

    변수를 먼저 선언 후 내부에 익명의 함수를 할당하는 방식

let getTriangleArea = function (base, height) {
  let triangleArea = (base * height) / 2;
  return triangleArea;
}
  • 화살표 함수

    변수를 선언하고 funtion 키워드를 화살표(=>)로 축약한 방식 / 화살표 함수는 항상 익명이다.

let getTriangleArea = (base, height) => {
  let triangleArea = base * height;
  return triangleArea;
}	

​ 만약 함수 본문에 return만 있는 경우, return과 중괄호를 생략할 수 있다.

let getTriangleArea = (base, height) => base * height;

또한 생성자 함수라는 것도 존재한다. (추후 설명)

Updated: