함수 호출의 기본 예제
<script>
var 함수 = function(){
var output = prompt('숫자를 입력해주세요.', '숫자');
alert(output);
};
함수();
</script>
매개변수의 개수가 맞지 않을때의 예제
<script>
alert('원래 매개 변수 입니다.', '추가된 매개 변숭입니다');
prompt('원래 매개 변수입니다.'/*, '추가된 매개변수 입니다.'*/);
</script>
가변 인자 함수 예제
<script>
function sumAll(){
var willReturn = 0;
for(var i in arguments){ //for(var i = 0; i<arguments.length; i++)
willReturn += arguments[i];
}
return willReturn;
}
alert(sumAll(1,2,3,4,5,6,7,8,9)); //arguments인 1부터 9까지 더해져서 결과가 45가 나옴
</script>
결과
45
리턴이 없을 때 예제
<script>
function returnTest(){
alert('문장 A');
return;
alert('문장 B');
}
var value = returnTest();
alert(typeof (value)+' : '+value);
</script>
결과
익명 함수를 매개 변수로 전달하는 예제
<script>
function callFunctionTenTimes(otherFunction){
for (var i = 0; i < 10; i++){
otherFunction();
}
}
callFunctionTenTimes(function(){
alert('Hello World..!');
});
</script>
결과
Hello World..!를 10번 호출
선언적 함수를 매개 변수로 전달하는 예제
<script>
function callFunctionTenTimes(otherFunction){
for(var i = 0; i<10; i++){
otherFunction();
}
}
function justFunction(){
alert('Hello World..!');
}
callFunctionTenTimes(justFunction);
</script>
결과
Hello World..!를 10번 호출
익명 함수를 리턴하는 함수 예제
<script>
function outerFunction(){
return function(){
alert('Hello World .. !');
};
}
outerFunction()();
</script>
결과
Hello World .. ! 1번 출력
클로저의 정의
: 지역 변수를 남겨두는 현상
: 함수 outerFunction() 내부의 변수들이 살아있는 것이므로 outerFunctino()으로 인해 생성된 공간
: 리턴되는 함수 자체
: 살아남은 지역 변수
클로저의 특성
: 자바스크립트 스스로 아직 지역 변수를 지우면 안된다는 것을 인식하고 남겨두는 특성을 지님
예제
<script>
function outerFunction(name){
var output = 'Hello '+ name + '..!';
return function(){
alert(output);
};
}
outerFunction('RintIanTta')();
</script>
결과
Hello RintIanTta
예제
<script>
function outerFunction(name){
var output = 'Hello '+name+'..!';
return function(){
return output;
};
}
var first = outerFunction('JavaScripot');
var second = outerFunction('jQuery');
alert(first());
alert(second());
</script>
결과
자바스크립트의 내장 함수
인코딩과 디코딩
인코딩은 문자를 컴퓨터에 저장하거나 통신에 사용할 목적으로 부호화하는 방법
디코딩은 부호화된 문자를 원래대로 되돌리는 것
예
이중에서 인코딩이 된 문자열이 EC%9D%B8%EC%BD%94%A9
자바스크립트의 인코딩, 디코딩과 관련된 내장 함수
escape() 적절한 정도로 인코딩한다.
unescape() 적절한 정도로 디코딩한다.
encodeURI(uri) 최소한의 문자만 인코딩한다.
decodeURI(encodedURI) 최소한의 문자만 디코딩한다.
encodeURIComponent(uriComponent) 대부분의 문자를 인코딩한다.
decodeURIComponent(encodedURI) 대부분의 문자를 디코딩한다.
참고
escape()
: 영문 알파벳, 숫자, 일부 특수문자를 제외한 모든 문자를 인코딩
: 1바이트 문자는 %XX의 형태로, 2바이트 문자는 %uXXXX의 형태로 변환
encodeURI()
: escape() 함수에서 인터넷 주소에 사용되는 일부 특수문자는 변환하지 않는다.
encodeURIComponent()
: 알파벳과 숫자를 제외한 모든 문자를 인코딩
: UTF-8 인코딩과 같다.
예제
<script>
var URI = 'http://tmsy.tistory.com?test=한글입니다.';
var output = ' ';
output += '★secape()\n'
output += escape(URI) + '\n\n';
output += '★encodeURI()\n'
output += encodeURI(URI) + '\n\n';
output += '★encodeURIComponont()\n'
output += encodeURIComponent(URI)+'\n\n';
alert(output);
</script>
결과
자바스크립트의 기본 내장 함수
함수명 설명
eval(string) string을 자바스크립트 코드로 실행
isFinite(number) number가 무한한 값인지 확인
inNaN(number) number가 NaN인지 확인
parseInt(string) string을 정수로 바꿈
parseFloat(string) string을 유리수로 바꿈
eval()함수
: 문자열을 자바스크립트 코드로 변환해 실행하는 함수
예제
<script>
var willEval = '';
willEval += 'var number = 10;';
willEval += 'alert(number);';
eval(willEval);
alert(number);
</script>
결과
10
Infinity와 NaN 예제
<script>
var number1 = 10/0;
var number2 = 10/'a';
alert(number1 + ' : '+number2);
</script>
결과
Infinity : 숫자를 0으로 나뉘면 들어감
NaN : 숫자이지만 자바스크립트가 표현할 수 없는 숫자
Infinity와 NaN 확장 예제
<script>
var number1 = 10/0;
var number2 = 10/'a';
alert(alert(isFinite(number1)) + ' : '+isNaN(number2));
</script>
결과
isFinite : 유한한 수이면 true
isNaN : isNaN이면 true
parseInt()함수와 parseFloat()함수 예제
<script>
var won = '1000원';
var dollar = '1.5$';
alert(parseInt(won) + ' : '+ parseInt(dollar));
alert(parseFloat(won) + ' : ' + parseFloat(dollar));
</script>