변수와 타입과 함수

Verba volant, scripta manent·2021년 1월 12일
0

JavaScript

목록 보기
1/20
post-thumbnail

변수와 타입

1. 변수

변수란 상황에 따라 변할 수 있는 값이다.
ex)변수를 myname 이라고 하면 myname은 들어갈 수 있는 값이 다 다르다.
ex)예를 들어, let myname = 'Hojin'이라고 할 때
선언은 let myname;
할당은 myname = 'Hojin'; 이라고 하는데,
이 때 선언은 let 키워드를 이용하며, 선언은 한번만한다.
'Hojin'은 변수 myname에 할당된 값이다.
할당할 때 쓰는 = 는 "같다"라는 뜻이 아니며, myname에 'Hojin'이라는 값을 대입(assign)하는 것이다.
이를 같이 쓰면 let myname = 'Hojin'; 이다.
해석하면 "myname 이라는 변수에 'Hojin'값을 할당하여 선언한다."

또한 변수는 동일한 변수를 이용해 대입할 수 있다.

let sum = 1;
sum = sum + 2;
sum = sum + 3;
sum = sum + 4;

이라고 할때, 수학적인 시각에서 접근하면
sum이 1이라고 했을 때,
1 = 1 + 2 가 되어 1 = 3 이 되어버린다.;
수학적으로는 말이 안된다.
하지만 프로그래밍 시각에서 접근하면 = 는 '같다'라는 뜻이 아니라 sum에 이미 할당된 sum + 2의 값을 대입한 것이라고 할 수 있다.
따라서,

let sum = 1; // sum의 값은 1이다. ①
sum = sum + 2 // sum은 sum+2, ①번 문장의 sum 값에 2를 더했으므로 3이 된다. 우항의 sum은 ①+2  --- ②
sum = sum + 3; // sum은 ②번 문장의 sum값에 3을 더한 6이 된다. 우항의 sum은 ②+3
sum = sum + 4; // sum은 ③번 문장의 sum값에 4를 더해 10이 된다. 우항의 sum은 ③+4

위의 예시를 보면 sum을 1이라고 한번 선언한 뒤로는 let을 다시 쓰지 않은 것을 볼 수 있다.
이를 통해 한번 선언했던 변수를 다시 사용할 때는 let을 쓰지 않는다는 것을 알 수 있다.

번외) let myname; 처럼 선언은 했지만 값을 할당하지 않은 경우 어떻게 될까?
myname이라는 변수에 할당된 값이 없다 => undefined(정의되지 않음)라는 결과가 나온다.

2. 타입

1 . number(숫자)
ex) 123;
2 . string(문자열)
ex) 'Yeonlisa'; <- 꼭 앞 뒤로 ''(작은따옴표)나 ""(큰따옴표)같은 따옴표를 붙인다.
3 . boolean(참과 거짓을 판단하는 타입)
ex) true/false;
4 . undefined(정의되지않음)
5 . 배열(문자열을 한 곳에 묶음)
['Hojin', 'Lisa', 'Major'];
6 . 객체(위의 타입들을 모두 묶을 수 있음)
{korean name : 'Hojin', Foreign name : 'Lisa', position : 'Major'};
7 . function()(함수)

함수

1. 함수의 정의

함수란 컴퓨터에게 일을 시키기 위한 지시사항의 묶음을 뜻한다.

입력 → 함수 → 출력의 과정으로 이루어짐

ex) f(x) = x2 (만일 x가 짝수일때)
x+5 (만일 x가 홀수일때)
f(2) = x는 2, 짝수이므로 22 , 즉 4이다.
f(3) = x는 3, 홀수이므로 3+5, 즉 8이다.
ex) f(x) = x로 들어가는 문자열의 길이
f(안녕하세요) = 안녕하세요 5개이므로 즉 5이다.

JavaScript에서의 함수 사용은 함수 이름과 입력을 이용한다.

let length = getLength("안녕하세요");
console.log(length); // 5

2. 함수의 종류

함수 선언식

function myFunction(input) {
 // 컴퓨터에게 시킬 일
}

함수 표현식

let myFunction = function(input) {
 // 컴퓨터에게 시킬 일
}

여기서 input을 매개변수(parameter)라고 하는데, 매개변수란 특별히 함수에서 사용할 입력값을 뜻한다.
매개변수는 함수 실행시 입력에 따라 바뀔 수 있으며 let 등의 키워드를 쓰지 않고도 사용할 수 있다.

위의 함수 선언식과 표현식은 같은 식이다.
식의 형태가 다를 뿐이다!
ex) 집까지 가는데 걸리는 시간을 계산하는 함수

여기서 20은 speed, 100은 distance 이다.

let timeToGoHome = function(speed, distance) {
  let time = distance / speed;
  console.log(time); // 이 과정에서 function(20, 100)일 경우 콘솔에 5라고 나온다.
}

이 상황에서 함수 바깥으로 결과를 가져오려면 return을 쓴다.

let timeToGoHome = function(speed, distance) {
  let time = distance / speed;
  return time; // return은 함수 밖으로 결과를 반환한다.
}

return을 쓰게되면

let myTime = timeToGoHome(20, 100);
console.log(myTime); // 5가 나온다.

만일 return이 없을 경우 어떻게 될까?

let timeToGoHome = function(speed, distance) {
  let time = distance / speed; // return이 없을 경우
}
let myTime = timeToGoHome(20, 100);
console.log(myTime); // undefined가 나온다. (myTime에 담긴 값이 없으므로)
profile
말은 사라지지만 기록은 남는다

0개의 댓글