함수 - 코드를 저장하는 공간.
변수와 함수의 차이점
변수 | 함수 |
1개의 데이터만 저장 | 자바스크립트 코드를 저장 |
var라는 키워드를 이용하여 선언 | function이라는 키워드를 이용하여 선언 |
문자형, 숫자형, 논리형 데이터를 보관 | 출력문, 제어문 등의 코드를 저장하고 데이터를 반환. |
객체를 참조 |
선언 방법
function 함수명(){
자바스크립트 코드;
}
참조 변수 = function(){
자바스크립트 코드;
}
호출
함수명();
참조 변수();
일반 함수 myFnc()는 호출 시 호이스팅(hoisting) 기술을 지원하여 함수 정의문 보다 호출 문이 먼저 나와도 함수 정의문을 끌어올려서 함수를 호출한다.
하지만 익명 함수 theFnc()는 오류가 발생.
매개변수가 있는 함수
function 함수명(매개변수1, 매개변수2, ...매개변수 n){
자바스크립트 코드;
}
함수명(데이터1, 데이터2, ...데이터n);
매개변수 없이 함수에 전달된 값 받아오기
function 함수명(){
arguments;
}
함수명(데이터1, 데이터2, 데이터3);
데이터를 반환하고 강제 종료하는 return 문
함수에서 결괏값을 반환할 때 사용. return 문이 실행되면 반복문의 break 문과 비슷하게 코드가 강제로 종료된다.
function 함수명(){
자바스크립트 코드1;
return 데이터(값);
자바스크립트 코드2; //출력 안됨
}
var 변수 = 함수명();
재귀 함수 호출
함수 정의문 내에서 내가 작성한 코드로 함수를 다시 호출하는 것을 재귀 함수 호출이라고 한다.
function myFnc(){
자바스크립트 코드;
myFnc();
}
myFnc();
함수 스코프
변수 또는 함수의 유효 범위를 가리킨다.
지역변수 - 스코프 영역에서 선언한 변수를 가리킨다. 스코프 영역에서만 사용.
전역변수 - 자바스크립트 어디든 사용할수 있다.
var 변수명; //전역 변수
function 함수명(){
var 변수명; //지역 변수
}
var score = 10;
function myFnc(){
var score = 50;
alert(score); //50출력
}
alert(score); //10출력
객체 생성자 함수
new 키워드를 사용해 객체를 생성하고 객체 생성자 함수에서 this 키워드를 사용해 생성한 객체에 속성과 함수를 등록한다.
function 함수명(매개변수1, 매개변수2, ...매개변수n){ //객체 생성자 함수
this.속성명 = 새 값;
this.함수명 = function(){
자바스크립트 코드;
}
}
var 참조 변수(인스턴스 네임) = new 함수명();
var 참조 변수 = {속성 : 새 값, 함수명 : function(){ ... }}
프로토타입
객체 생성자 함수를 선언하여 객체를 생성하고 속성과 함수를 등록하면 객체를 생성한 만큼 함수가 등록된다.
함수를 여러 개 등록하면 메모리 공간을 많이 차지하여 메모리를 낭비하게 된다.
프로토타입을 사용하여 등록한 함수는 원형(객체 생성자 함수)에서 생성된 객체를 공유할 수 있다.
즉, 여러 개의 함수를 등록할 필요가 없다.
function 함수명(매개변수1, 매개변수2, ...매개변수n){
this.속성명 = 새 값;
}
함수명.prototype.함수명 = function(){
자바스크립트 코드;
}
var 참조 변수(인스턴스 네임) = new 함수명();
document.write(react.getResult === vue.getResult); 는 true를 반환한다.
결과 적으로 두 객체는 같은 함수를 사용한다고 볼수 있다.
내장 함수
자바스크립트 엔진에 내장된 함수이며, 바로 호출하여 사용할 수 있다.
내장 함수의 종류
종류 | 설명 | 사용 예 |
encodeURI() | 문자를 유니 코드값으로 인코딩한다. (영문, 숫자, 일부 기호( ; , / ? : @ & = + $ )는 제외 |
encodeURI("?query=값"); -> "?query=%EA%B0%91" |
encodeURIComponent() | 문자를 유니 코드값으로 인코딩한다(영문, 숫자 제외) | encodeURIComponent("?query=값") -> "%3Fquery%3D%EA%B0%91" |
decodeURI() | 유니 코드값을 디코딩해 다시 문자화 | decodeURI("?query=%EA%B0%91") -> "?query=값" |
decodeURIComponent() | 유니 코드값을 디코딩해 다시 문자화 | decodeURIComponent("%3Fquery%3D%EA%B0%91") -> "?query=값" |
parseInt() | 문자열 데이터를 정수형 데이터로 변환 | parseInt("5.12") -> 5 parseInt("15px") -> 15 |
parseFloat() | 문자열 데이터를 실수형 데이터로 변환 | parseFloat("5.12") -> 5.12 parseFloat("65.5%") -> 65.5 |
String() | 문자형 데이터로 반환 | String(5) -> "5" |
Number() | 숫자형 데이터로 반환 | Number("5") -> 5 |
Boolean() | 논리형 데이터로 반환 | Boolean(5) -> true Boolean(null) -> false |
isNaN() | is Not a Number의 약자이며 숫자가 아닌 문자가 포함되어 있으면 true를 반환 | isNaN("5-3") -> true isNaN("53") -> false |
eval() | 문자형 데이터를 따옴표가 없는 자바스크립트 코드로 처리 | eval("15 + 5") -> 20 |
'Develop > 자바스크립트 + 제이쿼리' 카테고리의 다른 글
제이쿼리 - 선택자 (0) | 2020.10.18 |
---|---|
객체 - 브라우저 객체 (0) | 2020.10.17 |
객체 - 내장 객체 (0) | 2020.10.15 |
제어문 (0) | 2020.10.15 |
자바스크립트 기초 문법 (0) | 2020.10.14 |
댓글