Function 사용하기
함수를 이용하면 아주 다양한 환경에서 사용할 수 있는 코드를 만들 수 있다. 이 코드는 계속해서 재사용 할 수 있고, 관리하기도 훨씬 쉽고, 복잡한 것을 처리해주는 코드에 간단히 이름만 붙여 놓고 중요한 일에 집중할 수 있게 해준다. 이렇게 복잡한 부분을 간단히 생각할 수 있게 해주는 방법을 추상화 라고 한다. 함수를 이용하면 어떤 코드를 가져와 이름을 붙이고, 그 코드가 필요할 때마다 이름만 불러주면 된다.
파라미터(Parameter) 와 인자(Agument)
함수를 정의할 때 사용되는 변수를 파라미터(Parameter)라고 하며 함수를 호출할 때에 전달하는 데이터를 인자(agument) 라고한다.
파라미터(Parameter)
function bark(name, weight) {
}
인자(Agument)
bark("해피", 23);
자바스크립트 함수는 값으로 전달한다.
자바스크립트가 인자를 전달하는 방법은 함수에 값으로 인자를 전달(Pass-By-Value) 한다. 다시 말하면 파라미터에 인자를 복사하는 것이다. 파라미터는 새로운 변수이다. 함수는 파라미터 앞에 var 키워드를 선언하지 않아도 적절히 변수를 만들고 초기화하는 과정을 처리해 준다.
함수를 사용 할 적에 파라미터 보다 적게 인자를 보내면 인자를 받지 못한 파라미터는 undefined 값으로 설정되며 파라미터보다 많은 인자를 보내면 남는 인자들은 무시된다.
return 문을 통하여 무언가를 돌려 줄 수 도 있으며 return 문이 없는 함수는 undefined 값을 반환한다.
전연변수와 지역변수
변수를 어디에서 정의하느냐에 따라 변수의 범위가 정해진다. 변수의 범위에 따라 코드의 어느 부분에서 이 변수를 사용할 수 있는지 결정된다. 자바스크립트에서 변수의 범위는(Scope)는 함수 밖에서 정의한 변수는 전역 범위(Global Scope), 함수 안에서 정의한 변수는 지역 범위(Local Scope)를 갖는다는 점에 주의해야 한다.
함수 바깥에서 선언하면 전역 변수가 되며 함수 안에서 선언하면 지역 변수가 된다.
페이지가 열려 있는 동안 전역 변수는 살아 있다.
자바스크립트가 페이지에 로딩될 때 전역 변수가 생성된다. 그리고 페이지가 사라질 때 전역 변수의 생명도 끝나게 된다.
똑같은 페이지를 다시 로딩하더라도 기존 전역 변수는 사라지고 전역 변수들이 새로 만들어 진다.
일반적으로 지역 변수는 함수가 종료되면 사라진다.
지역 변수는 함수가 호출될 때 생성되고 함수가 반환되면 사라진다(값을 반환 하는지 여부는 상관 없다). 그렇지만 변수가 사라지기 전에 지역 변수의 값을 가져와 함수가 종료될 때 반환 할 수 있다. 여기에서 '일반적으로' 라고 말하는 것은 지역변수라고 해도 수명을 약간 연장시키는 방법은 있기 때문이다.
지역변수는 전역 변수를 가린다.
선언된 전역변수 명으로 지역변수를 선언 할 경우 지역 변수가 전역 변수를 가린다(Shadow)고 말한다.
지역변수 때문에 전역 변수를 볼 수 없게 되므로 가린다라고 표현한다).
var beanCounter = 10;
function getNumberOfItems(ordertype) {
var beanCounter = 0;
if (ordertype == "order") {
// beanCounter를 이용해 연산을 수행
}
return beanCounter;
}
함수의 선언위치
자바스크립트는 함수를 사용하기 전에 선언하든 사용한 후에 정의하든 신경 쓰지 않는다.
예를 들어 다음과 같은 코드를 본다면 상당히 이상해 보일 수 있다.
var radius = 5;
var area = circleArea(radius);
alert(area);
function circleArea(r) {
var a = Math.PI * r * r;
return a;
}
브라우저가 웹 페이지를 로딩하고 파일 꼭대기에서 자바스크립트를 실행하기 시작하는데 사실은 자바스크립트는 웹 페이지를 두 단계로 처리한다. 첫번째단계는 모든 함수의 정의를 읽어들이고 두번째 단계에서는 코드를 실행하기 시작한다. 그렇기 때문에 함수는 파일 어디에 놓아도 상관이 없다.
자바스크립트는 변수와 함수를 정리하는 데 있어서 상당히 느슨한 편이다. 따라서 코드를 깔끔하게 정리하고 확장하기 쉽도록 만드는 것을 좋아한다. 전역 변수는 꼭대기에, 함수는 함께 있는 것을 좋아하고, 지역변수는 함수의 꼭대기에 선언하는 규칙을 지키는 편이 좋다.
출처: Head First JavaScript Programming
'💻 프로그래밍 > 🅹 JavaScript' 카테고리의 다른 글
JS undefined, null, NaN (0) | 2021.01.18 |
---|---|
JS HTML, DOM (0) | 2021.01.14 |
JS Object Properties (0) | 2021.01.10 |
JavaScript 난수 생성하기 (0) | 2020.12.12 |
JavaScript is ... (0) | 2020.12.11 |