오늘보다 더 나은 내일의 나에게_

비전공자의 IoT 국비 교육 수강일지 Day_30 본문

비전공자의 코딩일지

비전공자의 IoT 국비 교육 수강일지 Day_30

chan_96 2022. 1. 28. 18:43
728x90

자바스크립트 함수

특정한 목적의 작업을 수행하도록 설계된 독립적인 블록

필요할 때마다 호출하여 해당 작업을 반복 수행할 수 있음

 

자바스크립트 함수 -> 1급객체(first class citizen)

 

 

자바스크립트 함수가 객체로 간주되는 이유?

객체를 값을 의미, 자바스크립트의 함수는 값과 동일하게 취급

값처럼 변수에 할당할 수 있으며 속성 값이 될 수 있으며 배열의 요소가 될 수도 있음

 

 

1급 객체의 조건?

- 변수나 데이터 구조 안에 담을 수 있다
- 파라미터로 전달할 수 있다
- 리턴 값으로 사용할 수 있다

 

함수 VS 메서드

함수 메소드
특정 작업을 수행하는 코드 조각 객체의 속성 값으로 담겨진 함수를 부르는 명칭
클래스 및 객체와 연관되어 있는 함수

 

 

자바스크립트의 함수 사용 목적

- 코드의 재사용
>>미리 정의된 함수를 필요할 때마다 여러 번 호출할 수 있음

- 유지보수의 편의성
>> 코드 중복을 억제하고 재사용성을 높일 수 있음

- 코드의 신뢰성
>> 중복 코드를 줄여 개발자의 실수를 줄일 수 있음

- 코드의 가독성
>> 객체 타입의 값의 식별자로서 함수의 역할 파악에 도움을 줌

 

 

자바스크립트 함수 정의문

일반 함수 정의 방식
function 함수명(매개변수 1, 매개변수 2,... 매개변수 n){
      실행 로직
}
=> 호이스팅 지원!(함수를 아랫부분에 정의하고 상단에서 호출해도 호출 가능!)


익명 함수 선언 참조 방식
var 참조 변수명 = function(매개변수 1, 매개변수 2,... 매개변수 n){
     실행 로직
}
=> 호이스팅 지원 X

 

 

예제


코드

더보기
let x = prompt("기호를 입력하시오");
let y = Number(prompt("몇 줄 출력할지 입력하시오"));

pyramid(x,y);

function pyramid(x,y){
    for (let i = 0; i < y; i++) {
        for (let j = 0; j < i+1; j++) {
            document.write(x);
        }
        document.writeln("<br>");
    }
} //end of pyramid

 

 

자바스크립트 함수 특징

- 입력값의 타입을 확인하지 않는다
=> 숫자와 문자열 빼기 연산할 경우 타입 검사를 따로 하지 않고 문자열을 숫자로 변환

- 매개변수와 입력값의 개수가 같은지 확인하지 않는다
=> 내부적으로 arguments 객체(Array 형태)가 호출되어 인자들을 배열 형태로 저장

- 입력값의 개수가 매개변수의 개수보다 적다면 매개변수의 값을 undefined로 설정


코드
더보기
//1. 입력값의 타입을 확인하지 않음
//minusNum(1, "3");
function minusNum(n1,n2){
    alert(n1-n2);
}


// addNum(1,2,3); //1,2,3 콘솔창에 출력
//2. 매개변수와 입려값의 개수가 같은지 확인하지 않음
function addNum(n1,n2){
    //arguments 객체 내의 값 출력
    for(let i = 0;i < arguments.length;i++){
        console.log(arguments[i]);
    }
}

//3. 입력값의 개수가 파라미터 개수보다 적다면
//파라미터 값을 undefined로 설정
print(1);
function print(n1, n2){
    console.log(n1);
    console.log(n2);
    console.log(n1+n2);
};

 

화살표 함수(Arrow Function)

Es6 문법으로 익명 함수 선언 참조 방식으로 표현

코드

//1. 매개변수 없는 경우(로직이 한줄이면 대괄호 생략가능)
var print = () => console.log("print");
print();

//2. 매개변수 1개(매개변수 1개 시 소괄호 생략가능)
var printNum = num => console.log(num);
printNum(1);

//3. 매개변수 여러개, 여러줄 작성
var addNum = (a,b) =>{
    return a+b;
}
console.log(addNum(2,3));

 


 

자바스크립트 객체

여러 속성을 하나의 변수에 저장할 수 있도록 해주는 타입
Key / Value pair를 저장할 수 있는 구조


객체
= 속성(property) + 메서드(method)
property : 객체의 상태를 나타내는 값(data)
method : propery를 참조하고 조작할 수 있는 동작

 

 

자바스크립트 객체 특징

- 많은 값이 포함될 수 있는 변수이다

- Key/Value 쌍을 가진 정보를 나열할 수 있다

- Key는 문자열이어야 한다

- Value는 모든 유형이 될 수 있다.

- 한 쌍의 Key/Value 뒤에 쉼표를 이용하여 구분해주어야 한다

- 객체에서 명명된 값을 property라고 한다

- 변수는 예약어 이름을 가질 수 없지만 객체는 어떤 이름이어도 상관없다

- 객체 변수를 복사하면 참조가 복사되고 객체가 복사되지 않는다

 

 

자바스크립트 객체 종류

원시 값(기본 데이터 유형)을 제외한 모든 값은 객체이다
- 배열
- 함수
- 객체
- 날짜
- 수학
- 정규표현식
- new 키워드로 정의된 boolean, 숫자, 문자열

 

ECMA SCRIPT 객체 구성

내장객체
(Built-in Object)
브라우저 내장 객체
(Navtive Object)
사용자 정의 객체
(Host Object)
JavaScript 엔진이 구동되는 시점에 바로 제공 어디서든 사용가능


Ex)
Global, Object, String,
Number, Boolean, Date,
Array, Math
JavaScript 엔진이 구동되는 시점에 바로 제공브라우저마다 구성을 달리하는 경우가 있어 내장객체와 분류, JavaScript 엔진을 구동할 때 build되는 객체들


Ex)
BOM(브라우저 객체모델)
DOM(문서 객체모델)
사용자가 생성한 객체들로 생성자 함수도 또는 객체 리터럴을 통해 사용자가 객체를 정의하고 확장시킨 객체 내장객체들이 구성된 이후에 구성되어짐

 

 

내장 객체(Built-in Object)

: 브라우저의 자바스크립트 엔진에 내장된 객체
필요한 경우 객체를 생성해서 사용할 수 있음

ex) 
날짜(Date) 객체 생성
var today = new Date()


Number 숫자를 표기할 때 표현 가능한 수의 속성과 숫자 표기법 제공
String 문자형 데이터를 객체로 취급
Array 여러 개의 데이터를 하나의 저장소에 저장할 때 사용
Date 날짜나 시간 관련 정보를 제공받고 싶을 때 사용
Math 수학과 관련한 기능과 속성 제공
정규 표현 입력 요소에 데이터를 규칙에 맞게 작성했는지 판단

예시 코드
Date

 //오늘 날짜 
var today = new Date();
var tYear = today.getFullYear(); // 날짜 객체가 가지고 있는 년도 속성
var tMonth = today.getMonth()+1; //월 (0~11)
var tDate = today.getDate(); //일
var tDay = today.getDay(); // 요일 (0~6 : 0일, 5(금), 6(토))

if(tDay === 5){
    tDay = "금";
}

console.log(tYear+"년 "+tMonth+"월 "+tDate+"일 "+tDay+"요일");

var hour = today.getHours();  //시
var min = today.getMinutes(); //분
var sec = today.getSeconds(); //초

console.log(hour+"시 "+min+"분 "+sec+"초");​


정규표현식

var phone = '010-1234-1234';
var phone1 = '111-123123-1234';

//정규표현식
var rPhone = /^01([0|1])-?([0-9]{3,4})-?([0-9]{4})$/;
//^ 뒤에나오는 것으로 시작하겠다

if(rPhone.test(phone1)==true){
    console.log("맞는 형식");
}else{
    console.log("틀린 형식");
}

//문자 리터럴(표현식) : 실행 시 문자열로 변경

var a = 20;
var b = 5;
var c = "자바";
var str = "저는 " + (a+b)+"살이고 "+c+"를 좋아합니다";
console.log(str);

var str2 = `저는 ${a+b}살이고 ${c}를 좋아합니다`;
console.log(str2);

 

브라우저 내장 객체(Browser Object Model)

: 브라우저에 내장된 객체

window : 브라우저 객체의 최상위 객체 (웹브라우저 창)

screen : 사용자의 모니터 정보(속성) 제공 객체

location : 사용자 브라우저 주소창 url에 대한 정보(속성, 새로고침 기능(메서드) 제공 객체)

history : 이전에 방문한 사이트와 다음 방문한 사이트로 다시 돌아갈 수 있는 속성과 메소드 제공

navigator : 현재 방문자가 사용하는 브라우저 정보와 운영체제의 정보를 제공

document : HTML 요소와 관련된 작업을 도와주는 다양한 메서드를 제공

 


JSP(Java Server Page)

응답하는 페이지를 쉽게 만들 수 있는 서버 페이지(개발자를 위한 페이지)

 

스크립틀릿(Scriptlet) : JSP에서 Java코드를 구현할 수 있는 영역



표현식(expression) : JSP내에서 변수나 메서드를 출력할 수 있는 영역


선언문 : JSP내에서 메서드나 상수를 선언(X) ->. java파일을 만들어서 메서드를 선언

 

 

내장객체(Implict Object)

JSP page안에서 내장 객체를 사용할 수 있는 이유는 Web container가 JSP page를 Servlet class로 변환시키면서 자동으로 내장 객체를 선언

 

 

표현식과 out.print( ) 적절한 사용 방법

<%= %> - 일반 변수에 사용
out.print( ) -  if문이나 for문에 사용

 

728x90
Comments