1. 객체와 변수

1-1. 빈 객체 생성

빈 객체를 만드는 것은 블록괄호{}를 지정하는 것으로 표현

let people = {};

 

 

 

1-2. 변수 추가

객체 안에 추가되어 있는 변수를 멤버변수 혹은 프로퍼티라고 한다.

변수 추가를 위해서는 "객체이름.변수명 = 값;"의 형식을 사용한다.

선언을 위한 별도의 var, let, const 키워드는 사용하지 않는다.

people.name = "hkd";
people.gender = "남자";

 

[예제 코드]

// 객체생성
let people = {};

// 객체안에 변수 포함
people.name = "hkd";
people.gender = "남자";

// 변수 사용
document.write("<h1>" + people.name + "님은 " + people.gender + " 입니다.</h1>");

▶ hkd님은 남자 입니다. 출력됨

 

 

 

1-3. 객체 생성 및 값 꺼내기

객체는 {key:value}의 모임이다.

 

[예제 코드]

// 객체 생성 방법 1 - 생성과 동시에 key:value 할당
let grades = { 
    "abc" : 10, "def" : 6, "ghr" : 8 
};

// 객체 값 출력 방법 1 : key값을 지정하면 value값이 출력된다.
document.write("<h1>" + grades.abc + "</h1>");
document.write("<h1>" + grades.def + "</h1>");
document.write("<h1>" + grades.ghr + "</h1>");

document.write("--------------------------");

// 객체 값 출력 방법 2
document.write("<h1>" + grades["abc"] + "</h1>");
document.write("<h1>" + grades["def"] + "</h1>");
document.write("<h1>" + grades["ghr"] + "</h1>");

document.write("--------------------------<br>");

// 객체 생성 방법 2 - new Object()로 생성 후 key:value 할당
let grades2 = new Object();
grades2['abc'] = 10;
grades2['def'] = 6;
grades2['ghr'] = 20;

// 객체 값 출력 방법 3 - key와 value 모두 출력
for( key in grades2 ){	// grades2 객체 안 key 개수 만큼 for문을 돈다.
    document.write("key : " + key + ", value : " + grades2[key] + "<br/>")
}

 

[출력 결과]

 

 

 

1-4. 함수가 선언된 변수

자바스크립트의 변수는 선언 시에 데이터 형이 결정되지 않기 때문에 함수를 대입하는 것도 가능하다.

이렇게 생성된 변수는 함수와 동일한 사용 방법을 갖는다.

 

[예제 코드]

// 일반적인 함수의 선언
function myFunction(){
    document.write("<h1>Hello, javascript</h1>");
}

// javascript는 함수와 변수가 동급
// 따라서 함수의 이름을 변수에 대입할 수 있다.
let value = myFunction;

// 함수가 대입된 변수는 그 자신이 함수처럼 동작한다.
value();	// Hello, javascript

document.write("-------------------------------");

// 함수를 변수에 대입할 수 있기 때문에,
// 처음부터 변수에 함수의 내용을 대입하는 것이 가능하다.
let value2 = function(){
    document.write("<h1>Hello~ Javascript!</h1>")
};

value2();	// Hello~ Javascript!

 

 

 

1-5. 객체 안의 객체 / 객체 안의 함수

[예제 코드]

let grades = {
    'list' : { 'aaa' : 10 , 'bbb' : 6, 'ccc' : 80 },
    'show' : function() {
        document.write('Hello World');
    }
};

document.write(grades);			// [object Object]
document.write(grades['list']);		// [object Object]
document.write(grades['list']['aaa']);	// 10

document.write(grades.list);		// [object Object]
document.write(grades.list.aaa);	// 10

document.write(grades['show']);		// function() { document.write('Hello World'); }
grades['show']();			// Hello World
grades.show();				// Hello World

▶ 객체 안의 객체의 정확한 key를 지정해주지 않으면 [object Object]로 출력되어 값 확인을 할 수 없다.

▶ 객체 안에 함수가 value로 들어갔을 때, key를 출력시키면 함수 전체 내용이 출력된다.

▶ 함수를 사용하기 위해선 객체[key]();의 형태나 객체.key();의 형태로 사용해야 한다.

 

 

 

1-6. this

객체 안에 포함된 메서드에서 다른 메서드를 호출하거나 변수를 호출할 때 사용

 

[예제 코드]

let people = {};
	
people.name = 'hkd';
people.gender = '남자';

// 객체안에 함수 포함시키기
people.sayName = function(){
    // 객체 안에 포함된 함수에서, 멤버변수에 접근하기 위해서는
    // this라는 예약어를 사용해야 한다
    document.write('<h1>' + this.name + '</h1>');
};

peple.sayName();	// hkd

 

[실습문제 1]

// 1. people객체에 gender가 출력되는 sayGender()함수 생성
people.sayGender = function(){
    document.write('<h1>' + this.gender + '</h1>');
};

people.sayGender();	// 남자

document.write('-------------------------------');

// 2. people객체에 saySomething() 함수 생성(param1), document.write로 출력
people.saySomething = function(param1){
    document.write('<h1>' + param1 + '</h1>');
};

people.saySomething("hello world");	// hello world

document.write('-------------------------------');

// 3. people객체에 sayInfo() 함수 생성, 
// getter를 이용하여 다음과 같이 출력 -> <h1> hkd 님은 남자 입니다. </h1>
people.sayInfo = function(){
    document.write('<h1>' + this.getName() + " 님은 " + this.getGender() + ' 입니다.</h1>');
};

people.getName = function(){
    return this.name;
};
people.getGender = function(){
    return this.gender;
};

people.sayInfo();	// hkd 님은 남자 입니다.

 

 

[실습문제 2]

/*
    this키워드를 사용해서 for문 사용해서, grades.show() 호출시
    a:10
    b:20
    c:30
    을 출력하도록 하라
*/

let grades = {
    'list' : {'a':10, 'b':20, 'c':30},
    'show' : function(){
        for( let key in this.list ){
            document.write(key + " : " 
                + this.list[key] + "<br>");
        }
    }
};

grades.show();	// a : 10 <br> b : 20 <br> c : 30

 

 

 

1-7. 생성자

함수에 new 키워드를 붙여 실행한다.

함수 이름의 첫 글자는 대문자로 시작한다.

 

// 일반적인 함수 생성
let person = {};
person.name = 'hkd';
person.introduce = function(){
    return 'My name is ' + this.name;
};

document.write( person.introduce() );	// My name is hkd

document.write('------------------');

// 생성자 이용
function Person2(){};
let p = new Person2();

p.name = 'hkd';
p.introduce = function(){
    return 'My name is ' + this.name; 
};

document.write(p.introduce());	// My name is hkd

document.write('------------------');

// 생성자를 통한 객체의 초기화
function Person(name){
    this.name = name;
    this.introduce = function(){
        return 'My name is ' + this.name;
    };
}

let p1 = new Person('abc');
document.write(p1.introduce() + "<br>");	// My name is abc

let p2 = new Person('def');
document.write(p2.introduce() + "<br>");	// My name is def

 

728x90

'이론 > 자바 풀스택 국비수업' 카테고리의 다른 글

220513 Javascript 9  (0) 2022.06.23
220512 Javascript 8  (0) 2022.06.22
220511 Javascript 6  (0) 2022.06.22
220511 Javascript 문제  (0) 2022.06.21
220510 Javascript 5  (0) 2022.06.21

1.Math 내장 객체

Math 객체는 수학에서 자주 사용하는 상수와 함수들을 미리 구현해 놓은 자바스크립트 표준 내장 객체이다.

// 두 수 중에서 최대값
let max = Math.max(100, 123);
document.write('<h1>최대값 : ' + max + '<h1>');

// 두 수 중에서 최소값
let min = Math.min(100, 123);
document.write('<h1>최소값 : ' + min + '<h1>');

// 원주율
document.write('<h1>원주율 : ' + Math.PI + '</h1>');

// 소수점 반올림
let num1 = 3.7146;
document.write('<h1>소수점 반올림 : ' + Math.round(num1) + '</h1>');

// 절대값
let num2 = -123;
document.write('<h1>절대값 : ' + Math.abs(num2) + '</h1>');

// 난수발생(랜덤)
document.write('<h1>랜덤 : ' + Math.random() + '</h1>');

// 두 수 사이의 수를 리턴하는 함수
function random(n1, n2){
    return parseInt(Math.random() * (n2 - n1 + 1)) + n1;
}
// 함수 결과
let num = random(0,9);
document.write("<h1>0~9 사이의 난수 : " + num + '</h1>');

// 응용
let auth = " ";
for(let i = 0; i<5; i++){
    auth += random(0, 9);
}
document.write("<h1>인증번호 : " + auth + '</h1>');

 

[출력 결과]

 

▶ Math 내장 객체 조금 더 자세한 내용...

http://www.tcpschool.com/javascript/js_standard_math

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 


 

 

2. date 내장 객체

웹 브라우저가 설치된 PC(혹은 스마트 장치)의 현재 시간을 얻어오거나 날짜/시간을 계산하는데 필요한 기능을 제공

 

2-1. getFullYear(), getMonth(), getDate()

  • getFullYear() : 현재 연도 리턴
  • getMonth() : 현재 월보다 하나 작은 수를 리턴한다.
    0 : 1월 ~ 11 : 12월 (1을 더해주어야 현재 월을 출력할 수 있다.)
  • getDate() : 현재 일 리턴
let mydate = new Date();

// 년, 월, 일 리턴
let yy = mydate.getFullYear();
let mm = mydate.getMonth() + 1;
let dd = mydate.getDate();

let result = yy + '-' + mm + '-' + dd;
document.write("<h1>" + result + "</h1>");	// 오늘 날짜 연-월-일 순으로 출력됨

 

 

 

2-2. getDay()

함수의 리턴값이 요일을 의미한다.
0: 일요일 ~ 6 : 토요일
숫자값이기 때문에, 실제 요일을 의미하는 문자열을 출력하기 위해서는 일요일부터 토요일까지를 내장하고 있는 배열을 생성한 후, getDate() 함수의 리턴값을 배열의 인덱스로 활용한다.

// 요일 저장 배열
let days = ["일", "월", "화", "수", "목", "금", "토"];

let mydate = new Date();

let i = mydate.getDay();
let day = days[i];
document.write("<h1>" + day + "</h1>");	// 오늘 요일 출력됨

 

 

 

2-3. setInterval()

1/1000초 단위의 시간 값을 파라미터로 설정하여 정해진 시간마다 한 번씩 파라미터로 전달된 함수를 반복적으로 호출한다.

  • setInterval 함수를 활용한 타이머
    - printTime 함수를 1초에 한 번씩 반복해서 자동 호출한다.
    - ex. setInterval(printTime, 1000);
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body onload="startTimer();">
	<h1 id = "timer"></h1>
	<script>
		// 파라미터로 정의된 함수를 1초에 한 번씩 반복해서 자동 호출
		// 별도의 함수를 정의하는 형태가 아니라 다음과 같이 
        	// function(){} 익명함수를 직접 설정하는 것도 가능하다.
		// 이처럼 파라미터 형태로 전달되는 함수를 -> 콜백함수
		/* 
        	setInterval(function(){
			.. 함수 내용 ..
		}, 1000);
        	*/
		
		function printTime(){
			// 현재 시간을 구한다.
			let days = ['일', '월', '화', '수', '목', '금', '토'];
			let mydate = new Date();
			
			let yy = mydate.getFullYear();
			let mm = mydate.getMonth() + 1;
			let dd = mydate.getDate();
			let i = mydate.getDay();
			let day = days[i];
			let hh = mydate.getHours();
			let mi = mydate.getMinutes();
			let ss = mydate.getSeconds();
			
			// 완성된 현재시각
			let result = 
				yy + "-" + mm + "-" + dd + "-" + 
				day + "요일" + hh + ":" + mi + ":" + ss;
			
			// id 속성값이 timer인 요소에게 결과를 출력
			document.getElementById("timer").innerHTML = result;
		}
        
		function startTimer(){
			// printTime함수를 1초에 한 번씩 호출
			setInterval(printTime, 1000);
		}
	</script>
</body>
</html>

 

[출력 결과]

 

728x90

'이론 > 자바 풀스택 국비수업' 카테고리의 다른 글

220512 Javascript 8  (0) 2022.06.22
220512 Javascript 7  (0) 2022.06.22
220511 Javascript 문제  (0) 2022.06.21
220510 Javascript 5  (0) 2022.06.21
220510 Javascript 4  (0) 2022.06.21
let s = ['이유덕', '이재영', '권종표', '이재영', '박민호', 
'강상희', '이재영', '김지완', '최승혁', '이성연', '박영서',
'박민호', '전경헌', '송정환', '김재성', '이유덕', '전경헌'];

 

문제 1. '이재영'(매개변수)이란 이름이 몇번 반복되는지 return하는 function

[코드]

function naming(param){
    let name = param;
    let count = 0;

    for(let i = 0; i<s.length; i++){
        if( s[i] == name ){	// s[i]의 값과 name이 같다면 
            count++;		// 카운트 1증가
        }
    }

    return name +  "->" + count; 
}

document.write(naming('이재영'));

 

[결과]

 

 

 

문제 2. s배열에서 중복을 제거한 이름을 return해주는 함수를 생성(매개변수 없음)

[코드]

function name2(){
	// 중복되지 않는 이름을 넣을 빈배열 생성
    let uniq = [];

    for( let i = 0; i<s.length; i++ ){
        let uni_count = 0;
        for( let j = 0; j<s.length; j++ ){
            // i와 j가 같다면
            if( s[i] == s[j] ){
                uni_count++;
            }
        }
        // uni_count가 1보다 크면 중복되는 이름
        if( uni_count == 1 ){
            uniq.push(s[i]);
        }
    }
    return uniq;			
} 

document.write( name2() );

 

 

 

문제3. 주어진 값이 아래 배열에 있는지 판단하는 함수 생성 (매개변수 arr, value) 

let arr = [10, 20, 30, 40];

결과  : "해당 data " + value + " 은" + arr + "에 존재한다." / "해당 data " + value + " 은" + arr + "에 존재하지 않는다."

 

function find( array, value ){
     // value가 array에 없으면 indexOf()가 -1을 indexNum에 할당한다.
    let indexNum = array.indexOf( value );

    if( indexNum == -1 ){
        return "해당 data " + value + " 은" + array + "에 존재하지 않는다."
    } else {
        return "해당 data " + value + " 은" + array + "에 존재한다.";
    }
}

document.write( find(arr, 50) ); // 해당 data 50은 10, 20, 30, 40에 존재하지 않는다.

 

 

728x90

'이론 > 자바 풀스택 국비수업' 카테고리의 다른 글

220512 Javascript 7  (0) 2022.06.22
220511 Javascript 6  (0) 2022.06.22
220510 Javascript 5  (0) 2022.06.21
220510 Javascript 4  (0) 2022.06.21
220510 Javascript 3  (0) 2022.06.21

1. 배열

프로그램에서 이야기 하는 변수를 그룹으로 묶은 형태의 한 종류로써, 사물함 같은 형태를 갖고 있다.
Javascript에서는 데이터형의 선언을 별도로 하지 않기 때문에 데이터 형에 대한 제약은 없다. (단, 배열 안에는 한 종류의 값들만 저장하는 것이 바람직하다.)

 

1-1. 배열 만드는 방법

  • 크기가 정해진 배열
let myarray = new Array(값1, 값2, ... , 값n);
let myarray = [값1, 값2, ... , 값n];

생성된 배열은 사물함과 같이 각각의 칸에 값이 저장되고, 각각의 칸은 0부터 일련번호가 지정된다.

(일련번호 = 배열의 인덱스)

 

  • 빈 배열 : 아무런 값이 저장되어 있지 않은 형태로 만든 후 하나씩 값을 채워나가는 방법 
// 빈 배열 생성
let myarray = new Array();
let myarray = [];

// 빈 배열에 값 할당
myarray[0] = 'java';
myarray[1] = 'spring';

// myarray 길이는 현재 2

 

 

 

1-2. 배열 데이터의 접근

생성된 배열의 값에는 "배열이름[일련번호]" 형식으로 접근할 수 있다.

// 변수에 myarray 0열 값 할당
let lang = myarray[0];

// myarray 2열에 "html" 할당(재할당)
myarray[2] = "html";

 

 

 

1-3. 예제 1

// 배열 생성
// 방법1
let myarray = new Array("html", "javascript", "jsp");
// 방법2
// let myarray = ["html", "javascript", "jsp"];

// 값 읽기
document.write('<h1>' + myarray[0] + '</h1>');	// html
document.write('<h1>' + myarray[1] + '</h1>');	// javascript
document.write('<h1>' + myarray[2] + '</h1>');	// jsp

// 배열에 값 재할당
myarray[0] = 'java';
myarray[1] = 'spring';
myarray[2] = 'spring boot';

// 값 읽기
document.write('<h1>' + myarray[0] + '</h1>');	// java
document.write('<h1>' + myarray[1] + '</h1>');	// spring
document.write('<h1>' + myarray[2] + '</h1>');	// spring boot

 

 

 

1-4. 예제 2

let myarray = new Array();

// 반복문을 통해서 값을 저장
for (let i = 0; i < 10; i++) {
    myarray[i] = i;
}

// 배열 길이 출력
document.write("배열의 길이 : " + myarray.length);

// 배열 안 값 출력
for (let i = 0; i < myarray.length; i++) {
    document.write("<p>" + myarray[i] + "</p>");
}

 

[출력 결과]

 

 


 

 

2. 2차 배열

2-1. 2차 배열 생성 방법

let myarry = new Array(
    new Array(값1, 값2, ... , 값n),
    new Array(값1, 값2, ... , 값n)
);

let myarray = [
    [값1, 값2, ... , 값n],
    [값1, 값2, ... , 값n]
];

 

 

 

2-2. 2차 배열 사용

생성된 배열의 값에는 "배열이름[행][열]" 형식으로 접근할 수 있다. 행, 열의 인덱스 값 시작은 0부터 시작

 

  • 값 읽기
// 변수 lang에 myarray 0행 0열 값 할당
let lang = myarray[0][0];

 

  • 값 대입
// myarray 1행 2열에 "통신" 값 할당
myarray[1][2] = "통신";

 

  • 크기 조회
// 행의 크기
배열객체이름.length;

// n번째 행에 대한 "열"의 크기를 조회
배열객체이름[n].length;

 

 

 

2-3. 예제

		let myarray = new Array(
			new Array('웹표준', 'HTML5/CSS3', '반응형 웹'),
			new Array('javascript', 'jQuery', 'Ajax')
		)
		
		// 2차 배열 값 출력
		for (let i = 0; i < myarray.length; i++) {
			for (let j = 0; j < myarray[i].length; j++) {
				document.write('<h1>' + myarray[i][j] + '</h1>');
			}
		}

 

[출력 결과]

 

 

 


 

 

3. 주요 내장 함수

3-1. alert(문자열)

주어진 문자열을 확인 대화창으로 화면에 표시

alert("alert창 입니다.");

 

 

 

3-2. confirm(문자열)

주어진 문자열이 표시되는 확인/취소 대화창을 화면에 표시

function test() {
    if (confirm("comfirm창 입니다. 확인 또는 취소를 눌러주세요.")) {
        alert("확인을 누르셨습니다.");
    } else {
        alert("취소를 누르셨습니다.");
    }
}

test();

확인 버튼을 누르면 '확인을 누르셨습니다.' / 취소 버튼을 누르면 '취소를 누르셨습니다.' alert 창으로 이어진다

 

 

 

3-3. prompt(문자열)

주어진 문자열이 제목으로 표시되는 값을 입력받기 위한 대화창

prompt("prompt창 입니다.")

사용자에게 입력받은 값을 저장하거나 if문을 돌려 새로운 반응을 도출할 수 있다.

 

 

 

3-4. eval(문자열)

주어진 문자열을 수식으로 변환하여 리턴

let a = "1+1";
let b = 1 + 1;
let c = eval("1+1");

document.write("<h1>" + a + "</h1>");	// 1+1
document.write("<h1>" + b + "</h1>");	// 2
document.write("<h1>" + c + "</h1>");	// 2

 

 

 

 

3-5. Number와 parseInt

  • Number(문자열) : 주어진 문자열의 변수가 숫자 모양일 경우 실제 숫자형으로 변환하여 리턴
  • parseInt(문자열) : 주어진 문자열의 변수가 숫자 모양일 경우 실제 숫자형으로 변환하여 리턴
  • Number 함수와 parseInt 함수의 차이
    전달되는 파라미터가 정수 형태의 문자열일 경우 두 함수는 동일한 결과를 리턴하지만, 실수 형태를 갖는 문자열을 전달할 경우 두 함수는 서로 다른 결과를 리턴한다.
let value = "100";
let num1 = Number(value);
let num2 = parseInt(value);

let r1 = value + 1;
let r2 = num1 + 1;
let r3 = num2 + 1;

document.write("<h1> r1 = " + r1 + "</h1>");	// 1001
document.write("<h1> r2 = " + r2 + "</h1>");	// 101
document.write("<h1> r3 = " + r3 + "</h1>");	// 101

▶ r1은 문자열 + 숫자이므로 숫자가 문자열로 변환되어 1001이 출력된다.

▶ r2와 r3는 Number와 parseInt를 통해 숫자형으로 변환되어 숫자+숫자로 계산되어 출력된다.

 

let value = "100.6";
let num1 = Number(value);
let num2 = parseInt(value);

let r1 = num1 + 1;
let r2 = num2 + 1;

document.write("<h1> r1 = " + r1 + "</h1>" );	// 101.6
document.write("<h1> r2 = " + r2 + "</h1>" );	// 101

▶ Number는 소수점까지 숫자형으로 변환해주기 때문에 r1은 101.6이 출력된다.

▶ parseInt는 int형으로 변환하기 때문에 소수점을 버리고 100만 숫자로 변환된다. 따라서 r2는 101이 출력된다.

 

 

 

3-6. isNaN(문자열) 

  • isNaN 함수는 파라미터로 전달되는 변수의 NaN 여부를 boolean 형태로 리턴한다.
  • 주어진 문자열이 숫자형식이 아니면 true, 숫자 형식이면 false를 리턴
  • ex. 파라미터가 숫자로 변환할 수 없는 문자열일 경우에는 NaN 형태이므로 true를 리턴
  • parseInt 함수나 Number 함수의 정상동작을 보장하기 위해서는 파라미터를 전달하기 전에 해당 값의 NaN 여부를 검사해야한다. 
  • isNaN 함수의 결과를 부정하면, 그 값은 숫자값이거나 숫자형으로 변환 가능한 문자열이라는 의미가 된다.

 

[예제 코드 1]

// NaN
let a = Number("a");
document.write("<h1> a = " + a + "</h1>");	// NaN

// NaN + 1
lat a_sum = a + 1;
document.write("<h1> a_sum = " + a_sum + "</h1>");	// NaN

// Nan + str
let a_str = a + "str";
document.write("<h1> a_str = " + a_str + "</h1>");	// NaNstr

▶ Number 함수와 parseInt 함수는 파라미터로 전달된 문자열이 숫자 형태가 아닌 경우 "NaN"이라는 값을 리턴한다.
▶ "NaN" 값과 숫자값과의 연산은 모든 결과가 "NaN"이다.

▶ "NaN"이 문자열이기 때문에 "NaN" + "str"은 "NaNstr"로 출력된다.

 

[예제 코드 2]

let v1 = "가나다라";
let v2 = "12345";

// 숫자일 경우 true 아닐 경우 false로 받기 위해 isNaN 앞에 !를 붙여준다.
let is_num1 = !isNaN(v1);
let is_num2 = !isNaN(v2);

if(is_num1){
    document.write("<h1>" + v1 + "은(는) 숫자 입니다." + "</h1>")
} else {
    document.write("<h1>" + v1 + "은(는) 숫자가 아닙니다." + "</h1>")
}

if(is_num2){
    document.write("<h1>" + v2 + "은(는) 숫자 입니다." + "</h1>")
} else {
    document.write("<h1>" + v2 + "은(는) 숫자가 아닙니다." + "</h1>")
}

 

[출력 결과 2]

 

[예제 코드 3]

function sumInt(x, y){
    let isStrX = !isNaN(x);
    let isStrY = !isNaN(y);

    // x와 y가 숫자로 변환 가능한 문자열이라면 true이므로 if문을 돌릴 때 !를 붙여 false로 만들어준다.
    // 둘 중 하나라도 숫자 모양이 아니라면, 실행을 중단하고 메시지를 리턴한다.
    if(!isStrX || !isStrY){
        return "숫자 형태이거나 숫자값이 전달되어야 합니다.";
    }

    let result = parseInt(x) + parseInt(y);
    return result;
}

let sum1 = sumInt("a", 1);
let sum2 = sumInt("100", 1);
let sum3 = sumInt("-100", 1);

document.write("<h1>" + sum1 + "</h1>");	// 숫자 형태이거나 숫자값이 전달되어야 합니다.
document.write("<h1>" + sum2 + "</h1>");	// 101
document.write("<h1>" + sum3 + "</h1>");	// -99

 

728x90

'이론 > 자바 풀스택 국비수업' 카테고리의 다른 글

220511 Javascript 6  (0) 2022.06.22
220511 Javascript 문제  (0) 2022.06.21
220510 Javascript 4  (0) 2022.06.21
220510 Javascript 3  (0) 2022.06.21
220509 Javascript 2  (0) 2022.06.21

1. 함수

함수의 사용은 함수의 정의와 함수의 호출로 나뉜다.

 

 

 

1-1. 함수의 정의

function 함수이름(){
	.. 실행할 구문 ..
}

 

 

 

1-2. 함수의 호출

함수를 호출하기 위해서는 함수이름(); 형태를 사용한다.

함수이름();

 

 

 

1-3. 파라미터(parameters)가 있는 함수

// 함수의 정의
function 함수이름(파라미터){
	.. 실행할 구문 ..
}

// 함수의 호출
함수이름(파라미터);

 

 

 

1-4. 다중 파라미터가 있는 함수

// 함수의 정의
function 함수이름(파라미터1, 파라미터2, ..., 파라미터n){
	.. 실행할 구문 ..
}

// 함수의 호출
함수이름(파라미터1, 파라미터2, ..., 파라미터n);

 

 

 

1-5. return형 함수

자신이 호출된 위치로 되돌려 주기 위해서 "return"이라는 키워드를 작성한다.

// 함수 생성
function f(x){
	return x+1;
}

// 함수 호출
let y = f(4);	// y = 5;

 

 

 

1-6. 함수의 실행 중단(return의 중요한 의미)

자바스크립트 함수는 처리 도중 return문을 만나게 되면 그 즉시 실행을 중단한다.

리턴 값이 없이 처리를 중단하고자 하는 경우에는 return 키워드만 사용한다.

값이 없는 리턴 결과를 변수에 대입한 경우, 정의되지 않는 값인 "undefined"가 대입된다.

 

[예제 코드]

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script type="text/javascript">
		function f(x, y) {
			let z = x + y;
			
			// 값이 10보다 작을 경우 실행 중단
			if(z<10){
				return;
			}
			return z;
		}
		
		// 함수 호출
		let a = f(2,1);
		let b = f(5,7);
		let c = f(10,5);
		
		document.writeln("<h1>" + a + "</h1>");
		document.writeln("<h1>" + b + "</h1>");
		document.writeln("<h1>" + c + "</h1>");
	</script>
</body>
</html>

▶ document.writeln은 자바의 System.out.println과 사용 방법은 같고, 출력되는 곳이 어디인지만 다르다.

▶ 따옴표(쌍따옴표, 홑따옴표 상관 없음)를 사용해서 넣어준 html 태그는 그대로 작동된다.

 

[출력 결과]

let a가 function f(x, y)를 호출했을 때, z 가 10보다 작은 3이므로 if문 안에 들어가 값 없이 리턴된다.

 

 

 

1-7. 그 외

  • 함수 내 리턴이 여러 개라면 첫 번째 리턴만 유효하다.
function getLan() {
    return 'javascript';
    return 'test';
    return 'user';
}

alert(getLan());	// javascript

 

  • 파라미터 값이 정해진대로 주어지지 않는 경우
function f(x,y){
    return x + y;
}

document.write(f(1,2) + '<br>');	// 3

// 오류 없이 알아서 앞에 두 개만 읽어 옴
document.write(f(1, 2, 5) + '<br>');	// 3

// NaN 출력
document.write(f(1) + '<br>');
document.write(f() + '<br>');

▶ 파라미터를 두 개만 받는 함수를 호출할 때 파라미터를 여러 개 적어 놓으면, 앞에 두 개만 알아서 읽어 적용시킨다.

▶ 반대로 파라미터를 1개 또는 아무것도 적지 않는다면 NaN이 출력된다.

▶ NaN은 Not-a-Number를 뜻하는데, 나온 값이 숫자가 아니라는 뜻이다.

 

  • 다른 함수 호출
function sum(x, y){
    let z = x + y;
    return z;
}

function printResult(x, y) {
    let result = sum (x, y);
    documnet.write("<h1>" + result + "</h1>");
}

printResult(5, 6);	// 11

 

  • 익명 함수
    익명 함수는 일회성 호출용이다.
    생성과 동시에 즉시 호출한다.
(function(){
    let i = 0;
    while(i<10){
        document.write(i);
        i += 1;
    }
})();

 

 


 

 

2. 화살표 함수(arrow function)

위의 함수보다 단순하고 간결한 문법으로 함수를 만드는 방법

 

2-1. 매개변수가 없는 경우

let foo = () => console.log('arrow func');
foo();	// arrow func

 

 

 

 

2-2. 매개변수가 하나인 경우

소괄호 생략이 가능하다.

let foo2 = x => document.write(x);
foo2('arrow func2');	// arrow func2

 

 

 

 

2-3. 매개변수가 여러 개인 경우

소괄호 생략 불가능

let foo3 = (a, b) => a+b;	// return이 생략되어 있음
document.write(foo3(1, 3));	// 4

 

 

 

 

2-4. {} 사용

// {}를 사용했는데 return이 없을 경우
let foo4 = (a, b) => {a+b};
document.write(foo4(1, 3));	// undefined > 값이 return되지 않음

// return 값일 경우 return 명시
let foo5 = (a, b) => {return a+b};
document.write(foo5(1, 3));	// 4

 

 

 

 

2-5. 본문이 여러 줄인 경우

let foo6 = (a, b) => {
    const c = 3;
    return a + b + c;
};
document.write(foo6(1, 3));	// 7

 

 

 

 

2-6. 삼항 연산자 이용

let age = prompt('나이를 알려주세요.');
let welcome = (age < 18) ? () => alert('안녕') : () => alert('안녕하세요');
welcome();

 

 

 

2-7. 예제

function ask(question, yes, no){
    if(confirm(question )){
        yes();
    } else{
        no();
    }
}

// 익명 일반 function
// function()을 매개변수로 사용할 수 있다.
/* ask("동의하십니까?", 
        function(){alert("동의하셨습니다.")}, 
        function(){alert("취소 버튼을 누르셨습니다.")}); */

// 익명 화살표 function
ask("동의하십니까?", 
        () => alert("동의하셨습니다."),
        () => alert("취소 버튼을 누르셨습니다."));

 

[출력 결과]

 

728x90

'이론 > 자바 풀스택 국비수업' 카테고리의 다른 글

220511 Javascript 문제  (0) 2022.06.21
220510 Javascript 5  (0) 2022.06.21
220510 Javascript 3  (0) 2022.06.21
220509 Javascript 2  (0) 2022.06.21
220509 Javascript 1  (0) 2022.06.18

+ Recent posts