웹프로그래밍/JavaScript

프로그래밍 언어 응용 25일차 (24/12/13)

wkun 2024. 12. 13. 15:57

CONTENTS

 

JavaScript

4.변수

5.연산자

 

-------------------------------------

 

JavaScript

 

4.변수

 

◎부울형

-.ture와 false 두 값 중 하나만 기억함. 일반적으로 부울형은 비교 연산 결과값을 기억함. 주로 조건문에서 실행 조건을 제어하기 위해 사용됨

 

데이터에 따른 자료형_부울형

  <script>
    var boolean01 = true;
    var boolean02 = false;
    var boolean03 = 12;
    var boolean04 = 0;
    var boolean05 = NaN;
    var boolean06 = "abc";
    var boolean07 = "";
    var boolean08 = null;
    var boolean09 ;

    document.write(boolean01 + " " + boolean02 + "<br>");
    document.write(!!boolean03 + " " + !!boolean04 + "<br>");
    document.write(!!boolean05 + " " + !!boolean06 + "<br>");
    document.write(!!boolean07 + " " + !!boolean08 + "<br>");
    document.write(!!boolean09);
    //!!는 이중 부정 연산자로, 사용하지 않으면 변수에 들어간 값이 출력되어, ture/false 값을 명확하게 확인하기 위함
    </script>

 

1)숫자: 0ㅇ이나 NaN이면 'false', 그 외엔 'true'

2)문자: 빈 문자면 'false', 그 외엔 'true'

3)기타: null과 undefined는 'false'

 

◎null과 undefined형

-undefined: 변수는 선언되었으나 어떤한 값도 할당되지 않은 변수. 데이터가 있는지 여부를 모름(현재는 없음)

-null: 명시적으로 값이 없음을 표현

*1+null에서 null은 '0'으로 변환됨

*1+undefined는 연산 불가능이라 NaN(숫자가 아님)으로 변환됨

*문자열+null/undefined는 묹 그대로 반영되어 결합됨

 

◎객체형

-실제 세계에서 모든 사물은 하나의 객체에 해당하며, 자바스크립트에서 프로그래밍에 필요한 가장 기본적인 단위

-각 개체는 고유한 특성 값을 가지며,  고유한 행동을 함(속성과 메서드)

 

데이터에 따른 자료형_객체형

  <script>
    //객체 변수 선언과 초기화 방법1
    var myCar01={model:"BMW", color:"gray", speed:150};
    // myCar01.model="accent";  속성 바꿀 때
    document.write(myCar01 + "<br>")//값없을 때 데이터타입 나옴
    document.write(myCar01.model + "<br>");
    document.write(myCar01.color + "<br>");
    document.write(myCar01.speed + "<br>");
    document.write(typeof myCar01 + "<br>")
   
    //객체 변수 선언과 초기화 방법2
    var myCar02=new Object();
    myCar02['model'] = "benz";
    myCar02['color'] = "blue";
    myCar02['speed'] = 100;
    document.write(myCar02.model + "<br>");
    document.write(myCar02.color + "<br>");
    document.write(myCar02.speed + "<br>");
    document.write(typeof myCar02 + "<br>")
   
    //선언하는 변수명이 같으면 안됨
  </script>

 

◎배열

-연관된 데이터를 하나로 모아서 관리하기 쉽게 하는 자료형

-배열은 대괄호([]) 안에 콤마 (,)로 구분된 값의 리스트로 구성, 인덱스는 '0'부터 시작

 

데이터에 따른 자료형_배열

<body>
  <p id="demo"></p>
  <script>
    var cars = ["speed", "volvo", "BMW"];
    document.querySelector("#demo").innerHTML=cars[0];
  </script>
</body>

 

*프로그램언어  시작은 "0"임

 

◎형 변환

-데이터 타입을 강제 변환(명시적으로 형 변환) 시키는 것

-자바스크립트는 저장된 자료에 따라 자료형이 자동으로 변경됨, 그러나 입력 창을 통해 입력된 임의의 숫자는 문자로 인식되기 때문에 단순히 덧셈을 할 경우에는 의도치 않은 결과를 가져올 수 있음

-이 때 두 수를 덧셈할 경우 강제 변환(명시적으로 형 변환)을 시켜야 함, Boolead(), String(), Number() 함수를 이용함

 

형 변환

  <script>
    document.write(123+234+"<br>"); //두 숫자의 덧셈 = 숫자 **하나라도 문자열이 들어가면 문자열 결합을 수행함.
    document.write(123 + "234" + "<br>"); //숫자와 문자의 덧셈 = 문자
    document.write(false + 123 + "<br>"); //boolean과 숫자의 덧셈 = 숫자 (false는 0)
    document.write(123 + String(234) + "<br>"); //숫자와 형변환 문자의 덧셈 = 문자
    document.write(123 + Number("234") + "<br>"); //숫자와 형변환 숫자의 덧셈 = 숫자
    document.write(Boolean(1) + "<br>"); //숫자의 형변환 boolean = boolean (ture)
    document.write(Boolean(0)); //숫자의 형변환 boolean = boolean (false)
  </script>

 

◎데이터 입출력 방식

 

<자바스크립트의 데이터 입출력 방식>

데이터 출력 방식 설명
innerHTML속성 문서 객체에 HTML 문자열을 속성값으로 삽입하는 방식
선택한 요소의 자식에 삽입
document.write() document(문서영역=body)에 HTML로 작성하는 방식
window.alert() 창의 경고창으로 띄우는 방식
console.log() 콘솔 브라우저에 표시하는 방식 *[f12]->console 탭에 뜸, 진행상황파악에 좋음
confirm() 사용자에게 확인 대화 상자를 표시(확인/취소버튼 있음)
확인: ture 반환, 취소: false 반환

 

데이터 입력 방식 설명
prompt() 사용자에게 입력을 요청하는 대화 상자를 표시하는 방식
prompt('질문텍스트', '예시텍스트');
입력된 데이터는 문자열로 인식함
요소의 value로 입력하기 document.querySelector("css선택자")로 요소 선택 후 value 속성에 값 입력
dociment.querySelector('#demo').value="입력값";

 

HTML 데이터 출력 방법_innerHTML

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>자바스크립트 출력</title>
  <script>
    window.onload = function(){//준비구문, HTML보다 먼저 로딩되므로 필요
  document.querySelector('#demo').innerHTML='innerHTML 테스트';
}
  </script>
</head>
<body>
  <h1 id="demo"></h1>
</body>
</html>

 

HTML 데이터 출력 방법_document.write()

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>자바스크립트 출력하기</title>
  <script>
    document.write('<h1>document.write 테스트</h1>');
  </script>
</head>
<body>
 
</body>
</html>

 

HTML 데이터 출력 방법_alert()

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>자바스크립트 출력하기</title>
  <script>
    window.alert('alert 테스트');
    alert('alert 테스트2');
  </script>
</head>
<body>
 
</body>
</html>

 

HTML 데이터 출력 방법_개발자모드 console

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>자바스크립트 출력하기</title>
  <script>
    console.log('console 테스트');
  </script>
</head>
<body>
 
</body>
</html>

 

*따로 코드에 영향x

 

HTML 데이터 출력 방법_confirm()

  <script>
    if(confirm("제출하시겠습니까?")){
      alert("정상적으로 제출되었습니다");
    }else{
      alert("제출실패");
    }
  </script>

 

*조건문: ture/false

 

HTML 데이터 입력 방법_prompt()

  <script>
    var age = prompt("나이를 입력하시오", "숫자를 입력하시오");
    document.write(age);
  </script>

 

HTML 데이터 입력 방법_요소 선택

  <script>
    function inputFun(){
      var x = document.querySelector("#input_id").value;
      document.querySelector("#output_id").value=x;
    }
  </script>
</head>
<body>
  <input type="text" id="input_id" size="10">
  <input type="text" id="output_id" size="10">
  <button onclick = "inputFun()">클릭</button>
</body>

 

◎입력값의 형변환

-prompt() 함수를 이용하여 숫자를 입력받으면 문자열로 인식됨, 숫자의 산술 연산을 하려면 문자를 숫자로 변환하여 연산해야함

 

가족들의 나이를 입력받아 평균값을 출력

가족구성: 아빠, 엄마, 나, (형제)

입력방식: prompt()

형변환 함수: parselnt(), Number()

*가족 나이의 합(+), 인원수(/)=평균값

 

<!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>
<script>

var count = 0;

var father = prompt("숫자를 입력하세요","아버지의 나이를 입력하세요");
var ageFater = parseInt(father);
count = count + 1;

var mother = prompt("숫자를 입력하세요","어머니의 나이를 입력하세요");
var ageMother = parseInt(mother);
count = count + 1;

var brother = prompt("숫자를 입력하세요","형의 나이를 입력하세요");
var ageBrother = parseInt(brother);
count = count + 1;

var me = prompt("숫자를 입력하세요","나의 나이를 입력하세요");
var ageMe = parseInt(me);
count = count + 1;

var ageFamily = parseInt(father) + parseInt(mother) + parseInt(brother) + parseInt(me);
console.log(ageFamily);
document.write(ageFamily/count);
</script>
</body>

<!-- 1. 아빠 나이를 담을 변수,
 엄마 나이 담을 변수,
 형의 나이를 담을 변수,
 나의 나이 담을 변수
 인원수 담을 변수,
 결과값을 담을 변수

 2.각각 변수에 prompt(); 써서 값을 입력
 
 3.인원수 변수 +1 증가
 
 4.아빠 나이+엄마 나이+나의 나이 >결과값
 -이때 형변환 필요
 
 4.document.write(결과값/인원수 3 )
 -->
</html>

 

 


5.연산자

 

◎산술연산자

-수치 데이터를 처리하기 위해 사용하는 기본적인 연산자

연산자 설명
+ 더하기 연산자
= 빼기 연산자
* 곱하기 연산자
/ 나누기 연산자
% 나머지 연산자

 

사칙연산

  <script>
    var num01 = 7;
    var num02 = 5;
    document.write("num01 + num02= " + (num01 + num02) + "<br>");
    document.write("num01 - num02= " + (num01 - num02) + "<br>");
    document.write("num01 * num02= " + (num01 * num02) + "<br>");
    document.write("num01 / num02= " + (num01 / num02) + "<br>");
    document.write("num01 % num02= " + (num01 % num02) + "<br>");
  </script>

 

◎연결연산자

-숫자가 아닌 값을 +연산자로 처리시 값을 연결하는 연산처리함

연산자 설명
+ 수식이 아닌 값을 +연산자로 처리할 경우 값이 연결됨
+= 수식이 아닌 값을 +=연산자로 처리할 경우 변수 값이 추가적으로 연결됨

 

비교연산자

-좌변과 우변을 비교해서 true 혹은 false 결과를 도출하는 연산자

연산자 설명
> 좌변이 우변보다 크다
< 좌변이 우변보다 작다
>= 좌변이 우변보다 크거나 같다
<= 좌변이 우변보다 작거나 같다
== 좌변과 우변이 같다
(항등연산자-데이터유형이 달라도 값이 같으면 true
ex)문자'123', 숫자 123)
!= 좌변과 우변이 같지 않다
(데이터 유형이 같아도 값이 다르면 true)
=== 좌변과 우변이 같다
(완전항등연산자-데이터유형과 값이 모두 같아야 true)
!== 좌변과 우변이 같지 않다
(데이터유형과 값 모두 같아야 false) ex)5!==5

 

비교 연산

  <script>
    var x = 10;
    var y = 20;
    // var x_str = String(10);
    // var y_str = String(20);
    document.write("x == y:"+(x == y)+"<br>");
    document.write("x != y:"+(x != y)+"<br>");
    document.write("x > y:"+(x > y)+"<br>");
    document.write("x < y:"+(x < y)+"<br>");
    document.write("x >= y:"+(x >= y)+"<br>");
    document.write("x <= y:"+(x <= y)+"<br>");
    document.write()
  </script>
  </script>

 

*주의: 띄어쓰기 안하면 태그로 인식

 

◎대입 연산자

-변수에 값을 대입(할당)하는 연산자

연산자 예시 수식 설명 같은 수식
= x = 5; 변수 x에 5라는 값을 대입 x = 5;
+= x += 5; 기존 변수 값에 5라는 값을 더해서 대입 x = x + 5;  
-= x -= 5; 기존 변수 값에 5라는 값을 빼서 대입 x = x - 5;
*= x *= 5; 기존 변수 값에 5라는 값을 곱해서 대입 x = x * 5;
/= x /= 5; 기존 변수 값에 5라는 값을 나눠서 대입 x = x / 5;
%= x %= 5; 기존 변수 값에 5를 나눠 나머지를 구함 x = x % 5;

 

대입 연산

  <script>
    var num = 10;
    document.write("처음값:" + num + "<br>");
    num = 20; //num값을 20으로 변경
    document.write("=처리 후:" + num + "<br>");
   
    num += 10;
    document.write("+=처리 후:" + num + "<br>");
    num -= 10;
    document.write("-=처리 후:" + num + "<br>");
    num *= 5;
    document.write("*=처리 후:" + num + "<br>");
    num /= 20;
    document.write("/=처리 후:" + num + "<br>");
    num %= 3;
    document.write("%=처리 후:" + num + "<br>");
  </script>

 

◎증감연산자

-1씩 증가하거나 감소시키는 연산자

연산자 설명
++변수명 해당 줄에서 변수 값이 1만큼 증가
변수명++ 코드의 다음 줄부터 변수 값이 1만큼 증가
--변수명 해당 줄에서 변수 값이 1만큼 감소
변수명-- 코드의 다음 줄부터 변수 값이 1만큼 감소

 

증감 연산

  <script>
    var num = 10;
    document.write("처음값:" + num + "<br>");
    num++
    document.write("num++:" + num + "<br>");
    num--
    document.write("num--:" + num + "<br>");

    var num02 = 10;
    var num03 = 10;
    document.write("후처리:" + num02++ + "<br>");
    document.write("전처리:" + ++num03 + "<br>");
  </script>

 

◎논리연산자

-결과값이 true 혹은 false로 나오는 논리적 연산자

 

연산자 설명
&& 논리곱연산자-모든 조건이 맞으면 true 반환
|| 논리합연산자-조건 중 하나라도 맞으면 true 반환
! 부정연산자-값이 ture면 false, false면 true 반환

 

논리 연산

  <script>
    var test01 = 10 > 5;
    var test02 = 10 < 5;

    document.write("&&: " + (test01 && test02) + "<br>"); //and
    document.write("||: " + (test01 || test02) + "<br>"); //or
    document.write("!: " + !test01 + "<br>"); //반대로 출력
  </script>  

 

*컴퓨터는 보통 틀리면 0, 0이 아니면 맞다고 처리함

 

◎연산자 기본원칙

1.모든 연산에서 괄호 연산은 가장 먼저 계산함

2.우선순위가 동일한 연산자는 좌에서 우로 진행되면서 연산이 이루어짐

3.이항 연산보다 단항 연산의 연산이 먼저 이루어짐

4.산술 연산자>비교 연산자>논리 연산자 순으로 우선순위가 주어짐

5.대입 연산자는 우선 순위가 가장 낮음

 

<우선순위표>

우선순위 연산자 비고
1 (), [] 괄호 연산자
2 !, ++, -- 논리, 산술 연산자
3 *,/,% 산술 연산자
4 +,- 산술 연산자
5 <,<=,>,>= 비교 연산자
6 ==, ===, !=, !== 비교 연산자
7 && 논리 연산자
8 || 논리 연산자
9 =, +=, *=등 대입, 복합 연산자