함수 ( function )

 

코드가 많아지면 그 코드를 잘 정리 정돈하기 위한 도구가 필요하다

이때 생각할 수 있는 아주 간단하면서 강력한 도구가 함수 이다.

 

 

<h1>자바스크립트</h1>
    <h2>조건문</h2>
    <input type="button" id="night_day" value="night" onclick="
        
        var target = document.querySelector('body');
        
        if(this.value ==='night'){
            target.style.backgroundColor='black';
            target.style.color ='white';
            this.value= 'day';

            var alist = document.querySelectorAll('a')
            var  i = 0;
            while(i < alist.length){
                alist[i].style.color = 'red';
                i +=1;
            }
        }else{
            target.style.backgroundColor='white';
            target.style.color ='black';
            this.value= 'night';

            document.querySelectorAll('a')

            var alist = document.querySelectorAll('a')
            var  i = 0;
            while(i < alist.length){
                alist[i].style.color = 'blue';
                i +=1;
            }
        }
    ">

    <p>코딩하는 코린이</p>
    
    <ul>
        <li><a href="#">HTML</a></li>
        <li><a href="#">CSS</a></li>
        <li><a href="#">JavaScript</a></li>
        <li><a href="#">Java</a></li>
    </ul>
    

 

 위에 <input> 태그가 100개 있다고 가정하자

 

onclick 속성안에 있는 반복문 style.color = 'red';를

 

다른 색으로 바꿔야 한다면 100개 모두 바꿔야한다.

 

 

 

 

 

 

 

 

 

 

 

 

그러면 100개 input 은 중복된 코드가 된다.

 

이런 중복된 코드르 제거해주는 것이 함수 이다.

 

 

 


중복된 코드를 함수 안에 만들기

 

<script>
        function nightDayHandler(){
            var target = document.querySelector('body');
        
        if(this.value ==='night'){
            target.style.backgroundColor='black';
            target.style.color ='white';
            this.value= 'day';

            var alist = document.querySelectorAll('a')
            var  i = 0;
            while(i < alist.length){
                alist[i].style.color = 'red';
                i +=1;
            }     

        }else{
            target.style.backgroundColor='white';
            target.style.color ='black';
            this.value= 'night';

            document.querySelectorAll('a')

            var alist = document.querySelectorAll('a')
            var  i = 0;
            while(i < alist.length){
                alist[i].style.color = 'blue';
                i +=1;
            }
        }
        }

    </script>

script 태그 안에 함수를 선언하고 코드를 넣어주었다.

 

<input type="button" id="night_day" value="night" onclick="nightDayHandler()" >

 

onclick에 선언한 함수를 넣어주면

 

훨씬 코드가 간결하고 유지보수 하기가 쉽다.

 


매개변수와 인자

 

<script>
        
        function sum(left ,right){
            document.write(left + right+ '<br>');
        }
        sum(10,2);  //12
        sum(2,4);  //6
        sum(1,6); //7
    </script>

 

sum 이라는 함수에 첫번째 자리에는 left , 두번째 자리에는 right라는 변수를 정의 하였다.

 

이러한 변수를 매개하는 변수라 해서 매개변수(parmeter) 라고 한다.

 

sum(10,2) 에서 10은 left의 값으로 가게 되고 2는 right의 값으로 가게 되어있다.

 

이때 함수로 전달되는 10,2라는 값을 인자(argument) 라고 한다.

'JavaScript' 카테고리의 다른 글

리팩토링(refactoring) 이란?  (0) 2020.12.06
조건문 활용- 토글(toggle)  (0) 2020.12.06
JS의 이벤트  (0) 2020.12.06
script 태그  (0) 2020.12.06
JavaScript 란?  (0) 2020.12.06

리팩토링(refactoring)

 

 

코딩을 하고나면 코드에 비효율적인 면이 생기기 마련이다.

 

코드 자체를 효율적으로 만들어서

코드의 가독성을 높이고, 유지보수를 편리하게 만들고, 중복된 코드를 줄이는 방향으로 코드를 개선하는 작업

리팩토링이라고 합니다.

 

소프트웨어의 규모가 커지고 복잡해지면 틈틈이 리팩토링 해야 좋은 프로그램을 만들 수 있다.

 


 

 

사례

조건문을 이용하여 토글 기능이 있는 버튼을 구현하는 코드이다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>자바스크립트</h1>
    <h2>조건문</h2>

    <input type="button" id="night_day" value="night" onclick="
        if(document.querySelector('#night_day').value ==='night'){
            document.querySelector('body').style.backgroundColor='black';
            document.querySelector('body').style.color ='white';
            document.querySelector('#night_day').value= 'day';

        }else{
            document.querySelector('body').style.backgroundColor='white';
            document.querySelector('body').style.color ='black';
            document.querySelector('#night_day').value= 'night';
        }
    ">

    <p>코딩하는 코린이</p>

    

</body>
</html>

 

 

 

this 키워드 사용

 

onclick과 같은 이벤트 안에서 실행되는 코드에서는 현재 코드가 속해 있는 태그를 가리키도록 

약속돼 있는 특수한 키워드를 사용한다.  바로 this 키워드 이다.

 

<input type="button" id="night_day" value="night" onclick="
        if(document.querySelector('#night_day').value ==='night'){
            document.querySelector('body').style.backgroundColor='black';
            document.querySelector('body').style.color ='white';
            document.querySelector('#night_day').value= 'day';

 

document.querySelector('#night_day').value= 'day';

여기서 doucment.querySelector('#night_day')는 자기 자신을 가리킨다.

 

따라서 이 코드 대신 this로 바꾸면 된다.

 

 <input type="button" id="night_day" value="night" onclick="
        if(this.value ==='night'){
            document.querySelector('body').style.backgroundColor='black';
            document.querySelector('body').style.color ='white';
            this.value= 'day';

        }else{
            document.querySelector('body').style.backgroundColor='white';
            document.querySelector('body').style.color ='black';
            this.value= 'night';
        }
    ">

 

 this.value= 'day';

 

 

코드가 훨씬 간결해졌다.

 


중복 제거

 

위에 코드를 보면

 

 document.querySelector('body')

부분이 중복 해서 등장하고 있다.

 

 

중복된 코드를 간결하게 하여 유지보수 하기 편하게 만들어보자

 

<body> 태그를 변수 target에 할당

 

var target = document.querySelector('body');

 

 

<input type="button" id="night_day" value="night" onclick="
        
        var target = document.querySelector('body');
        
        if(this.value ==='night'){
            target.style.backgroundColor='black';
            target.style.color ='white';
            this.value= 'day';

        }else{
            target.style.backgroundColor='white';
            target.style.color ='black';
            this.value= 'night';
        }
    ">

 

코드가 간결해졌다.!!

'JavaScript' 카테고리의 다른 글

JavaScript 함수 (function)  (0) 2020.12.06
조건문 활용- 토글(toggle)  (0) 2020.12.06
JS의 이벤트  (0) 2020.12.06
script 태그  (0) 2020.12.06
JavaScript 란?  (0) 2020.12.06

프로그래밍에서 조건문은 굉장히 중요하다.

 

조건문이라고 하는 것은 하나의 프로그램이 하나의 흐름으로 가는 것이 아니라 

조건에 따라 다른 순서의 기능들이 실행되게 하는 것이라고 할 수 있다.

 

 


 

토글 기능

night 라는 버튼을 누르면 야간 모드, day 라는 버튼을 누르면 주간 모드가 되는 기능을 구현

 

 

 

<h1>자바스크립트</h1>
    <h2>조건문</h2>

    <input type="button" id="night_day" value="night" onclick="
        if(document.querySelector('#night_day').value ==='night'){
            document.querySelector('body').style.backgroundColor='black';
            document.querySelector('body').style.color ='white';
            document.querySelector('#night_day').value= 'day';

        }else{
            document.querySelector('body').style.backgroundColor='white';
            document.querySelector('body').style.color ='black';
            document.querySelector('#night_day').value= 'night';
        }
    ">

    <p>코딩하는 코린이</p>

 

 

if 라는 조건문과 비교연산자 === 를 사용하였다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


조건문과 비교연산자를 사용하여 토글 기능이 있는 버튼을 구현하였다.

 

 

'JavaScript' 카테고리의 다른 글

JavaScript 함수 (function)  (0) 2020.12.06
리팩토링(refactoring) 이란?  (0) 2020.12.06
JS의 이벤트  (0) 2020.12.06
script 태그  (0) 2020.12.06
JavaScript 란?  (0) 2020.12.06

 

이벤트자바스크립트가 사용자와 상호작용하는 데 핵심적인 역할을 한다.

 


 

 

https://www.w3schools.com/js/js_events.asp

 

JavaScript Events

JavaScript Events HTML events are "things" that happen to HTML elements. When JavaScript is used in HTML pages, JavaScript can "react" on these events. HTML Events An HTML event can be something the browser does, or something a user does. Here are some exa

www.w3schools.com

 

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <input type="button" value="hello">
</body>
</html>

버튼을 만들어 보았다.

 

 


alert 이벤트

 

여기서 hello 버튼을 눌렀을 때 경고창이 나타나는 이벤트를 사용하고 싶다.

 

 

경고창은 alert라는 기능을 사용해야한다.

 

 

 

 

 <input type="button" value="hello" onclick="alert('안녕')">

 

버튼을 누르면 안녕 이라는 메세지 창이 나타난다,

 

 

 

 

 


 

HTML 설명서에는 "onclick 속성 값으로 반드시 자바스크립트 코드가 와야합니다" 라고 적혀있다.

 

 

onclick 속성의 값은 웹 브라우저가 기억해 뒀다가, onclick 속성이 위치하고 있는 태그를 사용자가 클릭했을 때 

자바스크립트 코드를 자바스크립트 문법에 따라 해석해서 웹 브라우저가 실행한다.

 

 

그래서 hello 버튼을 클릭했을 때 alert('안녕')라는 코드가 실행 되는 것을 알 수 있다.

 

 

이렇게 웹 브라우저 위에서 일어나는 일들을 사건, 영어로 이벤트 라고 한다.

 

어떤 이벤트가 일어 났을 때 어떠한 자바스크립트 코드를 실행하게 하는 것이 여기서는 onclick  이다.

 

 

웹 브라우저에는 무수히 많은 이벤트가 존재한다.

 

 

https://www.w3schools.com/tags/ref_eventattributes.asp

 

HTML Event Attributes

HTML Event Attributes Global Event Attributes HTML has the ability to let events trigger actions in a browser, like starting a JavaScript when a user clicks on an element. To learn more about programming events, please visit our JavaScript tutorial. Below

www.w3schools.com

 


onchange 이벤트

 

 <input type="text" onchange="alert('changed')">

 

aaa를 입력하고 마우스 커서를 바깥쪽으로 빼면  onchange 이벤트가 발생하여

 

메세지 창이 나타난다.

 

여기서 다시 aaa를 쓰고 마우스 커서를 바깥쪽으로 빼면

 

메세지 창이 나타나지 않는다.  

값이 변경되지 않아 이벤트가 실행 되지 않은 것이다.!!!

 

 

 

 


onkeydown 이벤트

 

 <input type="text" onkeydown="alert('key down')">

 

텍스트 박스에 키보드에 아무 키를 누르면 실행되는 이벤트 이다.

 

 

'JavaScript' 카테고리의 다른 글

JavaScript 함수 (function)  (0) 2020.12.06
리팩토링(refactoring) 이란?  (0) 2020.12.06
조건문 활용- 토글(toggle)  (0) 2020.12.06
script 태그  (0) 2020.12.06
JavaScript 란?  (0) 2020.12.06

<script>

 

 

기본적으로 자바스크립트는 HTML 위에서 동작하는 언어이다.

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>

 

HTML의 기본 코드이다.

 

 

 

여기서 완전히 다른 문법을 가진 자바스크립트 코드를 넣기 위해서

 

<script> 태그를 사용한다.

 

<h1>JavaScript</h1>
    <script>
         document.write('<h1>hello world</h1>');
    </script>

 

웹 브라우저는 <script> 태그 안의 코드를 자바스크립트 코드로 해석한다.

 

둘 다 h1 태그를 사용하여 문자를 출력했다.

 

여기서는 차이를 느끼지 못하지만,

 

 

 <h1>JavaScript</h1>
    1+1
    <script>
        document.write('<h1>hello world</h1>');
        document.write(1+1);
    </script>

 

 

정적인 HTML 에서는 1+1 이 그대로 출력 되지만

 

동적인 자바스크립트는 1과 1을 더한 값인 2를 출력하게 된다.

'JavaScript' 카테고리의 다른 글

JavaScript 함수 (function)  (0) 2020.12.06
리팩토링(refactoring) 이란?  (0) 2020.12.06
조건문 활용- 토글(toggle)  (0) 2020.12.06
JS의 이벤트  (0) 2020.12.06
JavaScript 란?  (0) 2020.12.06

 

 

웹 페이지는 한 번 화면에 출력되면 자기 자신을 바꾸는 능력이 없습니다. 그것을 가능하게 해주는 것이

자바 스크립트 입니다.

 

 

자바스크립트는 사용자와 상호작용하는 언어입니다. 


 

 

 

 

 

 

night 와 day 라는 버튼이 있다.

 

각 각의 버튼을 클릭 했을 때 그것에 반응해서 웹 페이지를 바꿀 수 있다.

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>JavaScript 란?</h1>
   
   <input type="button" value="night" onclick="
   		document.querySelector('body').style.backgroundColor='black';
        document.querySelector('body').style.color='white'
    ">
    <input type="button" value="day" onclick="
        document.querySelector('body').style.backgroundColor='white';
        document.querySelector('body').style.color='black'
">

<p> 코딩하는 코린이</p>
</body>
</html>

 

input 의 onclick 이라는 속성의 값으로 자바스크립트 코드를 넣어서 

onclick의 속성이 위치하고 있는 버튼을 클릭했을 때 자바스크립트 코드를 실행하게 된다.

 

 

자바스크립트 코드를 보면

 

대략

document ( 이 문서에서 ) querySelector('body')  <body> 태그를 선택하겠다!

그 다음 <body> 태그에 style 속성 값으로 color= black 를 사용하겠다! 는 뜻이다.

 

 

 


 

 

 

'JavaScript' 카테고리의 다른 글

JavaScript 함수 (function)  (0) 2020.12.06
리팩토링(refactoring) 이란?  (0) 2020.12.06
조건문 활용- 토글(toggle)  (0) 2020.12.06
JS의 이벤트  (0) 2020.12.06
script 태그  (0) 2020.12.06

+ Recent posts