23.04.20 TIL

이한·2023년 4월 20일
0
post-thumbnail

TIL(Today I Learned)

📕 오늘 공부한 내용

자바스크립트에서 함수(function)는 일련의 코드 블록을 정의하고, 이를 실행하기 위한 도구입니다. 함수를 사용하면 코드를 여러 번 재사용할 수 있으며, 함수 내부에 정의된 변수와 매개변수(parameter)는 함수 외부에서 접근할 수 없기 때문에 코드의 안정성을 높이는 데에도 도움이 됩니다.

함수를 만들 때에는 function 키워드를 사용하여 함수의 이름을 정의하고, 필요한 매개변수를 정의합니다. 그리고 함수의 코드 블록을 중괄호({})로 묶어줍니다. 만들어진 함수는 호출(call)할 수 있으며, 이 때 매개변수에 필요한 값을 전달합니다.

예를 들어, 다음과 같이 함수를 만들고 호출할 수 있습니다.

// 함수 정의
function greet(name) {
  console.log('Hello, ' + name + '!');
}

// 함수 호출
greet('Alice'); // "Hello, Alice!"

위 코드에서는 함수 greet()을 정의하고, 이를 호출합니다. greet() 함수는 매개변수 name을 받아 'Hello, ' + name + '!' 문자열을 출력합니다. 그리고 함수를 호출할 때는 'Alice'라는 문자열을 인자(argument)로 전달했습니다. 이렇게 함수를 호출하면, 함수 내부의 코드가 실행되어 'Hello, Alice!'라는 문자열이 출력됩니다.

또한, 자바스크립트에서는 함수를 변수에 할당할 수도 있습니다. 이 때는 함수 이름 대신 변수 이름을 사용하여 함수를 호출합니다.

// 함수를 변수에 할당
let greet = function(name) {
  console.log('Hello, ' + name + '!');
}

// 함수 호출
greet('Bob'); // "Hello, Bob!"

위 코드에서는 함수를 변수 greet에 할당하고, 이를 호출합니다. 이렇게 함수를 변수에 할당하면, 함수 이름 대신 변수 이름을 사용하여 함수를 호출할 수 있습니다.

📚 어려웠던 내용

문제를 풀면서 어떤 부분에 오류가 뜨길래 왜 그런가 했더니 알고보니 변수의 범위에 대한 내용이었습니다. 자바스크립트에서 변수는 전역 범위 또는 함수 범위로 선언할 수 있습니다. 어떤 차이가 있냐면 함수 범위에서 선언된 변수는 해당 함수 내에서만 접근할 수 있습니다. 그리고 함수 외부에서 선언된 변수는 모든 함수에서 접근할 수 있습니다. 이 때, 함수 범위 내에서 선언된 변수는 함수 외부에서 접근할 수 없습니다.
이러한 변수의 범위를 함수 스코프라고 합니다.

let a = 1; // 전역 변수

function test() {
  let b = 2; // 함수 스코프 변수
  console.log(a); // 1
  console.log(b); // 2
}

test();
console.log(a); // 1
console.log(b); // ReferenceError: b is not defined

위 예제처럼 test() 함수 내부에서는 a와 b에 모두 접근할 수 있습니다. 하지만 test() 함수 외부에서는 함수 스코프 변수 b에 접근할 수 없습니다. 이를 위해서는 변수 b를 전역 변수로 선언해야 한다는 게 중요했습니다. 이걸 생각 못해서 변수 값이 안나오는 등의 문제를 겪었습니다.

🔍 궁금한 내용과 부족한 내용

혹시 더 간단히 함수를 정의할 수 있는 방법이 있나 찾아보았더니 ES6부터는 화살표 함수(arrow function)라는 새로운 함수 표기법이 도입되었습니다. 화살표 함수는 function 키워드 대신 => 기호를 사용하여 함수를 정의합니다. 이를 사용하면 함수를 더 간단하게 정의할 수 있었습니다.

// 화살표 함수
let greet = name => console.log('Hello, ' + name + '!');

// 함수 호출
greet('Charlie'); // "Hello, Charlie!"

그리고 함수 선언문과 함수 표현식은 기본적으로 동일한 기능을 하지만 함수 선언문은 자바스크립트의 특징인 호이스팅에 따라 브라우저가 자바스크립트를 해석할 때 맨 위로 끌어 올려지기 때문에 함수가 선언되기 전에 호출할 수 있지만 함수 표현식은 함수가 선언된 이후에만 호출할 수 있다는 점이 달랐습니다.

✏️ 느낀점,잡담

최근부터 아침에 일찍 일어나는 겸 컨디션 조절 겸해서 미라클 모닝을 시작했다.🏞
사실 아침 6시에 일어나는 정도라 미라클 모닝까진 아니지만 밤 늦게까지 깨있다가 늦잠을 자는 경우가 많았는데 이제는 일찍 일어나서 공부 준비도 하고 아침의 시작을 개운하게 하니까 하루를 기분좋게 보내는 경우가 많아졌고 공부 자체도 더 잘되는 착각같은 느낌을 받고 있다. 🥴 앞으로도 꾸준히 유지하는 게 중요하기에 늦잠자는 일이 없이 주말에도 유지할 생각이다.

profile
둥실둥실

0개의 댓글