처음부터 차근차근

함수와 Scope 본문

Language/JavaScript

함수와 Scope

HangJu_95 2023. 5. 22. 19:42
728x90

함수는 왜 사용하는가?

- 반복적으로 나오는 어떠한 코드를 반복해서 쓰는게 아니라, 함수를 지정함으로써 코드의 재사용성과 좀 더 깔끔하게 코드를 작성할 수 있도록 해줌

 

JS에서 함수 정의하기

// 1. 함수 선언문
function add(x, y) { // 소괄호 안에 매개변수가 들어간다.
    // 함수 내부에서 실행할 로직
    return x + y; // 함수의 값을 return 한다는 의미
}
// 2. 함수 표현식
let add2 = function(x, y) {
    return x + y;
}

// 함수를 호출한다 = 사용한다
// 함수명() = add(input)

function 함수명(parameter) {} 로 함수를 정의하거나, let을 통해 함수를 정의 할 수 있다.

함수 호출하기

함수가 정의되어 있는경우, 호출해보자.

let add2 = function(x, y) {
    return x + y;
}
console.log(add2(10,20)); // argument : 전달인자 -> 함수에 x,y를 전달해준다

값은 20가 나올것이다.

 

※ JS에서는 함수도 하나의 타입(datatype)이다.

따라서 함수를 변수에 대입하거나, 함수에 property를 지정하는 것도 가능

and JS 함수는 다른 함수 내에 중첩되어 정의될 수도 있다.

 

JS 화살표 함수

 - ES6 신문법

// 1-1 기본적인 화살표 함수

let add = (x, y) => {
    return x + y;
  }
 
  console.log(add(2, 3));   // 5

// 1-2 한줄로도 쓸 수 있다.

let add2 = (x, y) => x + y; // 중괄호 안에 로직이 한 줄일 경우

console.log(add(2, 3));   // 5

// 1-3  매개변수가 하나인 화살표 함수

let square = x => x * x;

console.log(square(3));   // 9

 

Scope란??

scope는 변수가 영향을 미치는 범위, 혹은 변수의 유효 범위

 

1. 전역 스코프

 - 블록 바깥이나 함수 바깥에 선언 된 변수

 - 어떤 위치의 코드에서든 사용할 수 있는 변수

let x = 10;

function printX() {
  console.log(x);
}

printX();   // 10

 

 

2. 지역변수

 - 함수 내, 아니면 어디 내부에서만 사용되는 변수

 

2-1 함수 스코프

 - 함수 스코프는 말 그대로 함수 내부에서 선언된 변수

 - 함수 내부에서만 접근할 수 있다.

function printX() {
  let x = 10;
  console.log(x);
}

// console.log(x); 전역에는 x가 없으므로, 오류 발생
printX(); //

2-2 블록 스코프

 - 말 그대로 블록{}, if문, for문 블록 내부에서 선언된 변수.

 - 블록 내부에서만 접근 가능

(var은 내부에서 선언해도 바깥에서 접근 사용이 가능하다.)

if (true) {
  let x = 10;
  console.log(x);
}

console.log(x);   // ReferenceError: x is not defined

 

 

https://velog.io/@khd/%EC%8A%A4%EC%BD%94%ED%94%84%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C%EC%A0%84%EC%97%AD%EC%8A%A4%EC%BD%94%ED%94%84-%EC%A7%80%EC%97%AD%EC%8A%A4%EC%BD%94%ED%94%84

 

스코프에 대해서(전역스코프, 지역스코프)

스코프에 대해 알아봅시다

velog.io

 

 

 

 

'Language > JavaScript' 카테고리의 다른 글

객체 메소드  (0) 2023.05.24
조건문, 반복문  (1) 2023.05.24
연산자  (0) 2023.05.22
변수와 데이터 타입  (0) 2023.05.22
Fetch 사용하기(Get 사용하기)  (0) 2023.05.04