본문 바로가기
Web & Mobile/Javascript

Lecture 7 - Javascript(3)

by Bennyziio 2019. 4. 13.
반응형

html 
css

html + css = 동적(프로그램) 생성 = javascript(언어)

언어
    1. 자료(데이터)
           - 자료형
           - 변수
           - 연산자
            => 자료를 저장하고 연산(계산)하는 방법
    2. 제어(흐름 : 위 -> 아래 : 선언(변수) - 처리(제어) - 출력(console.log) 순으로 많이 진행되어옴)
          - 조건에 의한 분기(2개 : true / false)
               : if
                 switch
                 삼항연산자
                 * 필터, 그룹
          - 조건에 의한 반복
                : for - 유한루프
                  while - 무한루프(조건이 참이면 계속 돌다가 거짓일때 루프를 빠져나옴)
                  - 초기값
                     while(조건문) {
                               증가문;
                     }
                  do while
          * 중첩(중복 사용할 수 있다)
    3. 기타구조

js.37 while문

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">
/*
for(var i=1; i<=5; i++) {
console.log('for');
}
*/

var i=1;
while(i<=5) {
console.log('for');
i++;
}
</script>
</body>
</html>

js.38 while문을 사용하여 별을 10개까지 순차적으로 늘어나게 

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">
var i=1;
while(i<=10) {
var j=1;
var result="";
while(j<=i) {
result +="*";
j++;
}
console.log(result);
i++;
}
</script>
</body>
</html>

js.39 Do ~ while 문

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">

for(var i=1; i<=5; i++) {
console.log('for');
} 

/*
var i = 1;
do {
console.log(i);
i++;
} while(i<=5);
*/
</script>
</body>
</html>


js.40 continue, break 사용 법

제어조절(loop)
continue(한 번 건너뛰기)
break(중지)

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">
// 제어 조절(loop)
// continue(한 번 건너뛰기)
// break(중지)
/*
for(var i=1; i<=10; i++) {
if(i == 5) {
//break;
continue;
}
console.log(i);
}
*/

// 1~10까지 홀수 출력하는 continue

for(var i=1; i<=10; i++) {
if(i % 2 == 0) {
//break;
continue;
}
console.log(i);
}
</script>
</body>
</html>

 

js.41 label을 사용하여 해당 위치로 break 하기

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">

aloop : // label
for(var i=1; i<=5; i++) {
for(var j=1; j<=5; j++) {
if(j == 3) {
//break;
break aloop;
}
console.log(i + "/" + j);
}
}
</script>
</body>
</html>



배열(Array) - 여러개의 데이터를 한개의 변수로 묶음

num1 = 10;
num2 = 20;
..
num10 = 100;

// 배열형 변수 arr1 선언
var arr1 = [];

arr1[0] = 10;        // 0, 1 : index * 반드시 0부터 시작
arr1[1] = 20;
..

js.42 배열(Array) 사용 법

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">

// 배열의 선언
var arr1 = [];

arr1[0] = 10;
arr1[1] = 20;
arr1[2] = 30;
arr1[3] = 40;
arr1[4] = 50;

console.log(arr1);

console.log(arr1[0]); // 0번 방 데이터 출력
console.log(arr1[4]); // 4번 방 데이터 출력

// length = 마지막 방 - 1(0부터 시작하기 때문에)
console.log(arr1.length);

// for 문을 이용하여 데이터 전체를 편리하게 가져올 수 있다.
for(var i = 0; i < arr1.length; i++) {
console.log(arr1[i]);
}

// 전통적인 for 문
// 배열을 한 줄로 데이터 입력 하는 방법
var arr2 = ['가', '나', '다', '라'];
for(var i = 0; i < arr2.length; i++) {
console.log(arr2[i]);
}


// 배열을 위한 for 문(length가 없음)
for(var i in arr2) {
console.log(arr2[i]);
}

// 배열 안에 배열: 2차원, 3차원 즉, 배열도 중첩 가능
var arr3 = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90],
];
//console.log(arr3);
//console.log(arr3[0][0]);
//console.log(arr3[2][2]);
//console.log(arr3.length);
//console.log(arr3[0].length);

for(var i=0; i<arr3.length; i++) {
for(var j=0; j<arr3[i].length; j++) {
console.log(arr3[i][j]);
}
}

var arr4 = [
[10],
[40, 50],
[70, 80, 90],
];

for(var i=0; i<arr4.length; i++) {
for(var j=0; j<arr4[i].length; j++) {
console.log(arr4[i][j]);
}
}



</script>
</body>
</html>

 


함수(function : 기능/모듈)

    사용자(개발자) 정의 함수
    내장 함수 - 엔진 개발자(포함되어 있는)
         - 라이브러리 / API(application program interface)

    변수 + 제어문 = 모듈화
     반복사용을 위해서 미리 선언 - 반복문

     선언
         function 함수이름() {
              내용;
              내용;
              ..
              내용;
         }
     호출
          함수이름();
          함수이름();

js.43 함수

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
// 선언(실행 X)
function hello() {
console.log("Hello Function");
}
</script>
</head>
<body>
<script type="text/javascript">
// 호출 (실행)
hello();
hello();
hello();
hello();
</script>
</body>
</html>

 

js.44 지역변수

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
// 선언(실행 X)
function hello() {
console.log("Hello Function");
}

function func1(data1) {
// 지역변수 : {}안에서만 쓰이는 변수 : argument/parameter
// var data1 = 값;
console.log('data1 : ' + data1);
}

function func2(data1, data2) {
console.log('data1 : ' + data1);
console.log('data2 : ' + data2);
}
function sum(num1, num2) {
var sum = num1 + num2;
console.log('합계 : ' + sum);
}

// 두 개의 값을 받아서 합을 구한 함수 sum 선언
</script>
</head>
<body>
<script type="text/javascript">
// 호출 (실행)
hello();
func1(1);
func2(1, '가');
sum(12, 7);
</script>
</body>
</html>

 

js.45 Return

내가 쓴 거

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
// return : 호출한 곳으로 반납
function func3() {
return 1;
}

function sum(num1, num2) {
return num1 + num2;
}

function sort(num3, num4) {
if(num3>num4) {
return num3;
}
else {
return num4;
}
}
</script>
</head>
<body>
<script type="text/javascript">
// 호출 (실행)
var result = func3();
console.log('결과 : ' + result);

var sum = sum(10, 20);
console.log('합계 : ' + sum);

var sort = sort(30, 20);
console.log('큰수 : ' + sort);

// 두 개의 수를 입력받아서 큰 값을 리턴하는 함수 sort 선언
</script>
</body>
</html>



강사님이 쓴거

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
// return : 호출한 곳으로 반납
function func3() {
return 1;
}

function sum(num1, num2) {
return num1 + num2;
}

function sort(value1, value2) {
var value = 0;
if(value1 <= value2) {
value = value2;
}
else {
value = value1;
}
return value;
}
</script>
</head>
<body>
<script type="text/javascript">
// 호출 (실행)
var result = func3();
console.log('결과 : ' + result);

var sum = sum(10, 20);
console.log('합계 : ' + sum);

var sort = sort(30, 20);
console.log('큰수 : ' + sort);

// 두 개의 수를 입력받아서 큰 값을 리턴하는 함수 sort 선언
</script>
</body>
</html>

* 삼항연산자로 작성

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript"> 
function sort(value1, value2) {
return (value1 <= value2) ? value2 : value1;
}

</script>
</head>
<body>
<script type="text/javascript">

result = sort(30, 20);
console.log(result);

</script>
</body>
</html>

js.46 익명 함수 - 일급 함수

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
// 선언적 함수
function func1() {
console.log("Hello Function 1");
}

// 익명 함수 - 일급함수
var func2 = function() {
console.log("Hello Function 2");
}; 
</script>
</head>
<body>
<script type="text/javascript">
func1();
func2();
console.log(func2);
// typeof는 자료형을 판단하는 연산자
console.log(typeof(func2));
</script>
</body>
</html>

 

js.47 익명 함수 - 일급 함수 심화

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
var func1 = function(data1, data2) {
console.log('data1 : ' + data1);
console.log('data2 : ' + data2);
}

var sum = function(num1, num2) {
return num1 + num2;
}
</script>
</head>
<body>
<script type="text/javascript">
func1(10, 20);
console.log('sum : ' + sum(10, 20));
</script>
</body>
</html>

 

js. 48 3 x 3 구구단

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
#outer td { text-align: center; width: 150px; border: 1px solid #ff0000; }
#inner td { text-align: center; width: 150px; border: 1px dotted #ff00ff; }
</style>
<script type="text/javascript">
// 부분 소스 : 모듈
// 단 수를 입력 받으면 구구단을 출력하는 함수
var gugudan = function(dan) {
var str = ""
str += "<table id='inner'>";
for(var i=1; i<=9; i++) {
str += "<tr>";
str += " <td>" + dan + " x " + i + " = " + (dan*i) + "</td>";
str += "</tr>";
}
str += "</table>";
return str;
};
</script>
</head>
<body>
<script type="text/javascript">
document.write("<table id='outer'>");
var dan = 1;
// 3 x 3 테이블 형식 출력하는 for 문
for(var i=1; i<=3; i++) {
document.write("<tr>");
for(var j=1; j<=3; j++) {
// 구구단 출력부분
document.write("<td>" + gugudan(dan) + "</td>");
++dan;
}
document.write("</tr>");
}
document.write("</table>");
</script>
</body>
</html>

js.49 함수에 함수를 할당

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
var func1 = function() {
console.log('Hello JS');
};
// 일급 함수
var func3 = function(callback) {
// 매개변수로 전달된 함수를 호출합니다
callback();
};
</script>
</head>
<body>
<script type="text/javascript">
func1();
// 함수의 선언을 변수처럼 사용가능
var func2 = func1;
func2();
func3(func2);
</script>
</body>
</html>



js.50 변수에 함수를 할당

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
var rFunc1 = function(data) {
//return function() {
// console.log('Hello Function');
//}

if(data == 1) {
return function() {
console.log('함수 1 호출');
};
}
else {
return function() {
console.log('함수 2 호출');
};
}
};
</script>
</head>
<body>
<script type="text/javascript">
//var result = rFunc1();
//result();

//rFunc1()();

rFunc1(1)();
rFunc1(2)();
</script>
</body>
</html>

 

js.51 내부 함수 - 함수 내부의 모듈화

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
// 내부 함수(임시 함수) - 함수 안에 함수 선언
// 함수 내부의 모듈화
var outer = function() {
var inner1 = function() {
console.log('내부 함수 1');
}
var inner2 = function() {
console.log('내부 함수 2');
}

inner1();
inner2();
};
</script>
</head>
<body>
<script type="text/javascript">
outer();
</script>
</body>
</html>

 

js.52 가변 인자 함수

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
// 가변 인자 함수 = 파라미터의 갯수 미확정
var func1 = function() {
};
var func2 = function(data1) {
};

var func = function() {
// Arguments - 내부에서 선언된 변수
// Arguments - 데이터를 가진 내부 배열
//console.log(arguments.length);
//console.log(arguments[0]);
//console.log(arguments[1]);
//console.log(arguments[2]);

for(var i=0; i<arguments.length ; i++) {
console.log(arguments[i]);
}
}
</script>
</head>
<body>
<script type="text/javascript">
func(1);
func(1, 2);
func(1, 2, 3);
</script>
</body>
</html>

 

내장 함수
1. 형변환 함수
     Number() - 문자열 -> 숫자
          parseInt()
                - Int : Interger(정수)
          parseFloat
                - Float- Floating Point(실수)
     String() - 숫자 -> 문자열
     Boolean() - 진리값으로 만들어 줌

js.53 형변환

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">

</script>
</head>
<body>
<script type="text/javascript">
var won = "1000원";
//var won = "원1000";

console.log(Number(won)); // 형변환
console.log(parseInt(won));
console.log(parseFloat(won));

var dollar = "1.5$";

console.log(parseInt(dollar)); // 정수(버림)
console.log(parseFloat(dollar)); // 실수

</script>
</body>
</html>

 


js.54 알람, 확인창

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">

</script>
</head>
<body>
<script type="text/javascript">
//alert('Hello 알림창');

if(confirm('Hello 확인창')) {
console.log('확인');
}
else {
console.log('취소');
}
</script>
</body>
</html>

 

js.55 타이머 함수

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">

</script>
</head>
<body>
<script type="text/javascript">
// 실행 내용
var cmd = function() {
console.log('cmd 함수 실행');
}

//setTimeout(cmd, 2000);
// 무한 루프 포함
//setInterval(cmd, 2000);

// callback 기법(함수 -> 함수)
setTimeout(function() {
console.log('함수 실행');
}, 2000)
</script>
</body>
</html>

 

js.56 - 인코딩, 디코딩

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">

</script>
</head>
<body>
<script type="text/javascript">
var str = '어벤져스';
var enStr = encodeURIComponent(str);

console.log(enStr);
console.log(decodeURIComponent(enStr));
</script>
</body>
</html>

 

js.57 eval - 문자열 => 프로그램

<!doctype html />
<html lang="ko">
<head>
<meta charset="utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">

</script>
</head>
<body>
<script type="text/javascript">
// eval - 문자열 => 프로그램
var str = '1 + 1';
console.log(str);
console.log(eval(str));

eval('var num = 2 + 2;');
console.log(num);
</script>
</body>
</html>

 

 

반응형

'Web & Mobile > Javascript' 카테고리의 다른 글

Lecture 10 - Javascript(6)  (0) 2019.04.14
Lecture 9 - Javascript(5)  (0) 2019.04.14
Lecture 8 - Javascript(4)  (2) 2019.04.13
Lecture 6 - Javascript(2)  (0) 2019.04.13
Lecture 5 - Javascript(1)  (0) 2019.04.13

댓글