UI/UX_014
간단정리
1. 함수
- 특별한 일을 수행하기 위한 코드들의 집합
- 자주쓰는 작업을 함수로 선언해서 필요할때마다 호출해서 쓸수 있음
1) 익명함수
- 변수를 선언하고 그 변수에 함수를 할당
- 함수가 호출될 때 마다 해석
- 항상 함수를 생성하고 변수에 할당 한 다음 호출
var variableName = function(parameters) {
code to be excuted;
}
variableName();
variableName는 함수 자료형
// 익명함수.
var a = function () {
var output = prompt("숫자를 입력해주세요.", "");
alert(output);
};
// 함수를 호출합니다.
a();
2) 선언적 함수
- 페이지가 로드할 때 단 한번 해석된다.
- 한번 해석된 후에는 함수는 호출될 때마다 실행된다
- 함수를 먼저 호출한 경우에도 정상 실행
function fuctionName(parameters) {
code to be excuted
}
functionName();
function A() {
var output = prompt('숫자를 입력해주세요.');
alert(output);
}
A();
2. 함수
- 특별한 일을 수행하기 위한 코드들의 집합
- 자주쓰는 작업을 함수로 선언해서 필요할때마다 호출해서 쓸수 있음
1)함수선언
function fuctionName(parameters) {
code to be excuted
}
2)함수호출
functionName(인수);
3. 매개변수, 리턴값, 인자
1) 매개변수 : 함수 호출과 함수 연결의 매개가 되는 변수
- 선언된 매개변수 보다 많은 경우 무시
- 선언된 매개변수 보다 적을 경우 undefined, NaN
### 가변 인자 함수
- 매개변수의 개수가 변할 수 있는 함수
- 매개변수가 선언된 형태와 다르게 사용했을 때 매개변수를 모두 활용하는 함수를 의미
- 가변인자 함수의 예 : Array( ) 함수
var array1 = Array(); ==> 빈 배열 생성
var array2 = Array(10); ==> 배열 요소 갯수가 10개인 배열생성
var array3 = Array(273, 103, 57, 32);
==> 인수를 배열 요소로 갖는 배열 생성
2) 리턴값 : 있는 경우 없는 경우
- 함수 실행 중 함수를 호출한 곳으로 돌아가라는 의미
3) 인자,인수 :
- 함수 호출 시 매개변수와 대칭 되는 값
// 함수를 선언합니다.
function f(x, y) { // x, y 는 매개변수
var z = x * y;
return z; // z는 리턴값
}
// 함수 호출
f(3, 2); // 3, 2는 인수
4. 인코딩 디코딩 함수
1) escape( ) <==> unescape( )
- 영문 알파벳과 숫자, 일부 특수 문자(@, *, -, _, +, ., / )를 제외하고 모두 인코딩
- 1바이트 문자는 %XX의 형태로, 2바이트 문자는 %uXXXX 형태로 변환
2) encodeURI ( ) <==> decodeURI ( )
- 인터넷 주소에 사용되는 일부 특수 문자( :, ;, /, =, ?, & )는 변환하지 않음
3)encodeURIComponent ( )<=>decodeURIComponent ( )
- 알파벳과 숫자를 제외한 모든 문자를 인코딩
- UTF-8 인코딩과 같음
5. 타이머 함수
1) setTimeout
- 일정시간이 지난 후에 함수가 실행
2) clearTimeout 은
- setTimeout을 취소
함수선언
var 변수 = setTimeout(함수명, 함수가 실행될 시간);
clearTimeout(변수);
- setTimeout 의 두번째 인수인 함수가 실행될 시간은 밀리세컨드 단위입니다. 1000 밀리세컨드가 1초
10초 = 10*1000;
1분 = 60 * 1000;
3) setInterval 은
- 일정시간 마다 함수가 실행
4) clearInterval 은
- setInterval 로 설정한 작업을 취소
함수선언
var 변수 = setInterval(함수명, 함수가 실행될 시간);
clearInterval(변수);
</script>
</head>
<body>
6. 코드 실행 함수
1)eval()
- 문자열을 자바스크립트 코드로 실행
7. 숫자 확인 함수
1) isFinite(number) : number 가 무한한 값이면 false 리턴
2) isNan(number) : number 가 NaN 이면 true 리턴
8.숫자 변환 함수
*** Number( ) 함수는 숫자로 바꿀 수 없으면 Nan로 변환
1) parseInt( ) 함수 : 정수로 변환
2) parseFloat( ) 함수 : 실수로 변환
예문
Ex_01 익명함수
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 익명함수.
var a = function() {
var output = prompt("숫자를 입력해주세요.", "");
alert(output);
};
// 함수를 호출합니다.
a();
document.write(typeof (a));
</script>
</head>
<body>
</body>
</html>
Ex_02
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
var a = function() {
alert('함수 A');
};
a();
//익명함수는 항상 먼저 선언 한 다음 호출
</script>
</head>
<body>
</body>
</html>
Ex_03
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
var a = function() {
alert('함수 A');
};
var a = function() {
alert('함수 B');
};
a();
</script>
</head>
<body>
</body>
</html>
Ex_04 선언적 함수
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
function A() {
var output = prompt('숫자를 입력해주세요.', '');
alert(output);
}
A();
</script>
</head>
<body>
</body>
</html>
Ex_05
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
A();
function A() {
alert('함수 A');
}
</script>
</head>
<body>
</body>
</html>
Ex_06 선언적 함수VS익명함수 중복 출력시 선언적 함수 먼저 다음이 익명함수
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 함수를 생성합니다.
var A = function () { alert('함수 A'); }///2
function A() {
alert('함수 B');
}//1
// 함수를 호출합니다.
A();// 함수A 출력 3
</script>
</head>
<body>
</body>
</html>
Ex_07
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 함수를 선언합니다.
function f(x, y) { // x는 매개변수
var z = x * y;
return z; // z는 리턴값
}
var r = f(3, 2);
alert(r);
</script>
</head>
<body>
</body>
</html>
Ex_08 오류나는 소스코드입니다. 확인해보세요(NaN)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 함수를 선언합니다.
function f(x, y) { // x는 매개변수
var z = x * y;
return z; // z는 리턴값
}
var r = f(3);
alert(r);
</script>
</head>
<body>
</body>
</html>
Ex_09
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 함수를 생성합니다.
function returnFunction(s, i) {
z = i * i;
//return z;
alert(z);
}
// 함수를 호출합니다.
returnFunction("로그인 하였습니다.", 3);
</script>
</head>
<body>
</body>
</html>
Ex_10
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 배열을 생성합니다.
var array1 = Array(); ///빈 배열
var array2 = Array(10); //배열의 요소가 10개인 배열
var array3 = Array(273, 103, 57, 32);
var array = [ 100, 200, 300 ];
// 출력합니다.
document.write(array1);
document.write("<br />");
document.write(array2);
document.write("<br />");
document.write(array3);
document.write("<br />");
document.write(array);
</script>
</head>
<body>
</body>
</html>
Ex_11 prompt로 값을 입력받아 원하는 구구단 출력
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>구구단출력함수</title>
<script>
function GuGu(dan) {
document.write("<h1>" + dan + "단 출력</h1><br />");
for (var i = 1; i < 10; i++) {
document.write(i + " * " + dan + " = " + i * dan + "<br />");
}
}
var x = Number(prompt("숫자 입력", ""));
GuGu(x);
</script>
</head>
<body>
</body>
</html>
Ex_12
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 인코딩할 URL을 만듭니다.
var URI = "http://hanb.co.kr?test=한글입니다.";
// 출력할 문자열을 만듭니다.
var output1 = escape(URI);
var output2 = encodeURI(URI);
var output3 = encodeURIComponent(URI);
// 인코딩 출력합니다.
document.write(output1 + "<br />");
document.write(output2 + "<br />");
document.write(output3 + "<br />");
var deoutput1 = unescape(output1);
var deoutput2 = decodeURI(output2);
var deoutput3 = decodeURIComponent(output3);
// 디코딩 출력합니다.
document.write(deoutput1 + "<br />");
document.write(deoutput2 + "<br />");
document.write(deoutput3 + "<br />");
</script>
</head>
<body>
</body>
</html>
Ex_13 setTimeout
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 3초 후에 함수를 실행합니다.
setTimeout(function() {
alert("3초가 지났습니다. 바이바이");
}, 3000);
/*function abc() {
alert("3초가 지났습니다. 바이바이");
}
setTimeout(abc, 3000);*/
</script>
</head>
<body>
</body>
</html>
Ex_14 clearTimeout
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 3초 후에 함수를 실행합니다.
var stop = setTimeout(function() {
alert("3초가 지났습니다. 바이바이");
}, 3000);
/*function abc() {
alert("3초가 지났습니다. 바이바이");
}
setTimeout(abc, 3000);*/
///alert(stop);
</script>
</head>
<body>
<button onclick="clearTimeout(stop);">멈추세요</button>
</body>
</html>
Ex_15 setInterval
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
var myVar = setInterval(function() {
myTimer()
}, 1000);
function myTimer() {
var d = new Date();
document.getElementById("demo").innerHTML = d;
}
</script>
</head>
<body>
<p id="demo"></p>
</body>
</html>
Ex_16
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
var cnt = 0;
function add() {
if (cnt == 5)
clearInterval(timer);
document.write(cnt);
cnt++;
}
var timer = setInterval(add, 1000);
</script>
</head>
<body>
</body>
</html>
Ex_17
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// 문자열을 생성합니다.
var willEval = "";
willEval += "var number = 10;";
willEval += "alert(number);";
//document.write(willEval);
// eval() 함수를 호출합니다.
eval(willEval);
</script>
</head>
<body>
</body>
</html>
Ex_18
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
function myFunction() {
var a = isFinite(123) + "<br />";
var b = isFinite(-1.23) + "<br />";
var c = isFinite(5 - 2) + "<br />";
var d = isFinite(0) + "<br />";
var e = isFinite("123") + "<br />";
var f = isFinite("Hello") + "<br />";
var g = isFinite("2005/12/12") + "<br />";
var h = isFinite(1 / 0) + "<br />";
var i = isFinite(0 / 1);
var res = a + b + c + d + e + f + g + h + i;
document.write(res);
}
myFunction();
</script>
</head>
<body>
</body>
</html>
Ex_19
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// Returns false.
document.write(isNaN(100) + "<br />");
// Returns false.
document.write(isNaN("100") + "<br />");
// Returns true.
document.write(isNaN("ABC") + "<br />");
// Returns true.
document.write(isNaN("10C") + "<br />");
// Returns true.
document.write(isNaN("abc123") + "<br />");
</script>
</head>
<body>
</body>
</html>
Ex_20
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
var won = '1000원';
var dollar = '1.5$';
alert(parseInt(won) + ' : ' + parseFloat(dollar));
//alert(Number(won) + ' : ' + Number(dollar));
</script>
</head>
<body>
</body>
</html>
Ex_21 입력값이 숫자아닐때 다시 함수를 불러서 이용 자동 테이블 생성기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
table {
border: 1px solid #575757;
}
td {
border: 1px solid #575757;
text-align: center;
width: 100px;
}
</style>
<script>
function AutoTableC(rows, cols) {
if (isNaN(rows) || isNaN(cols)) {
alert("숫자만 입력하세요");
var r = Number(prompt("줄수를 입력하세요", ""));
var c = Number(prompt("칸수를 입력하세요", ""));
AutoTableC(r, c);
} else {
var num = 1;
var r = rows;
var c = cols;
document.write("<table>");
for (var i = 0; i < r; i++) {
document.write("<tr>");
for (var j = 0; j < c; j++) {
document.write("<td>" + num + "</td>");
num++;
}
document.write("</tr>");
}
document.write("</table>");
}
}
var r = Number(prompt("행을 입력해봐요", ""));
var c = Number(prompt("열을 입력해봐요", ""));
AutoTableC(r, c);
</script>
</head>
<body>
<label>God Bless You!</label>
</body>
</html>