자바스크립트에서는 함수도 하나의 데이터 타입이다.
함수를 변수에 대입하거나, 함수에 프로퍼티를 지정하는것도 가능하다.
자바스크립트에서 객체나 함수는 모두 변수이다.
변수의 유효 범위(scope)란 해당 변수가 접근할 수 있는 변수, 객체 그리고 함수의 집합을 의미한다.
1. 지역 변수
- 함수내에서 선언된 변수를 가르킨다.
- 함수 내에서만 유효하며, 함수가 종료되면 메모리가 사라진다
자바스크립트에서는 선언되지 않은 변수를 사용하려고 하거나 접근하려고 하면 오류를 발생시킵니다.
하지만 선언되지 않은 변수에 대한 typeof 연산자의 결괏값은 undefined 값을 반환합니다.
2. 전역 변수
- 함수 외부에서 선언된 변수를 가르킨다.
- 이러한 전역 변수는 프로그램의 어느 영역에나 점근 할 수 있으면 웹페이지가 닫혀야 메모리에서 사라진다.
대부분의 프로그래밍 언어에서는 블록({})내에서 정의된 변수를 블록 외부에서 접근 할 수가 없습니다.
자바스크립테에서는 함수는 자신이 정의된 범위 안에서 정의된 모든 변수 및 함수에 접근 할 수 있다.
이를 함수의 유효범위(function Scope)하고 한다.
자바스크립트에서 함수의 유효범위라는 것은 함수 안에서 선언된 모든 변수는 함수 전체에 걸쳐 유효하다는 의미이다.
그런데 scope의 적용이 변수가 선언되기 전에도 똑같이 적용된다.
자바스크립트의 특징을 함수 호이스팅이라고 한다.
자바스크립트에서는 함수 호이스팅이 자동으로 수행되지만, 항상 함수 블록의 첫 부분에 변수를 선언하는 것이 좋습니다.
만약 함수의 정의보다 더 많은 인수가 전달되면, 매개변수에 대입되지 못한 인수들은 참조할 방법이 없다.
하지만 arguments객체를 이용하면, 함수로 전달된 인수의 총 개수를 확인하거나, 각각의 인수에도 바로 접근할 수 있다
arguments 객체는 함수가 호출될 때 전달된 인수를 배열의 형태로 저장하고 있다가 argument[0]에 저장하고 다음인수는 [1]에 저장하게 된다.
또한 인수의 총 갯수는 arguments 객체의 length프로퍼티에 저장된다.
default parameter는 함수를 호출할때 명시된 인수를 전달하지 않았을 경우에 사용하게 될 기본값을 의미한다.
자바 스크립트에서 기본 매개변수는 undefined 값으로 설정 되어있다.
자바스크립트는 사용자의 편의를 다양한 여러 전역 함수를 제공한다.
1. eval(): 문자열로 표현된 자바스크립트 코드를 실행하는 함수
2. isFinite(): 전달된 값이 유한한 수인지를 검사하여 그 결과를 반환, 인수로 전달된 값이 숫자가 아니라면 숫자로 변환하여 검사한다.
isFinite(123); // true
isFinite(123e100); // true
isFinite(0); // true
isFinite(true); // true 0
isFinite(false); // true 1
isFinite(null); // true null
isFinite("123"); // true null
isFinite(""); // true empty
3. isNaN(): 전달된 값이 NaN인지 검사하여 그 결과를 반환한다.
만약 인수로 전달된 값이 숫자가 아니라면, 숫자로 강제 변환하여 검사합니다.
4. parseFloat()
5. parseInt()
6. decodeURI(): encodeURI()로 부호화 된것을 해독한다.
7. decodeURIComponent(): encodeURIComponent() 함수나 다른 방법으로 만들어진 URI 컴포넌트를 해독합니다.
8. encodeURI() : 주소를 표시하는 특수문자를 제외하고, 모든 문자를 이스케이프 시퀀스 처리하여 부호화한다.
9. encodeURIComponent(): encodeURI()에서 부호화하지 않은 문자까지 부호화한다.
10. escape() :전달받은 문자열에서 특정 문자들을 16진법 이스케이프 시퀀스 문자로 변환합니다.
11. unescape(): 전달받은 문자열에서 escape() 함수나 다른 방법으로 만들어진 16진법 이스케이프 시퀀스 문자를 원래의 문자로 변환합니다.
12. Number(): 객체의 값을 숫자로 반환한다./ 날짜는 날짜로 반환한다.
13. String(): 문자열로 반환한다.
'Language > Javascript' 카테고리의 다른 글
[JS] 프로토타입 (0) | 2022.02.24 |
---|---|
[JS] 객체 (0) | 2022.02.24 |
[JS] 변수 (0) | 2022.02.24 |
[JS] 데이터 타입 (0) | 2022.02.24 |
[JS] 명시적 데이터 타입의 변환 (0) | 2022.02.21 |