자바스크립트(JavaScript) 자바스크립트의 특징 - 객체 기반의 스크립트 언어 - 대소문자 구별 - 문장 끝에 ;(세미콜론)을 사용(생략이 가능) 자바스크립트의 출력 Web API Console을 통해 브라우저 Console 창에 출력
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > 자바스크립트의 출력 </ title >
< script >
console . log ( '안녕하세요 자바스크립트' );
</ script >
</ head >
< body >
< h2 > 자바스크립트의 출력 </ h2 >
< script >
console . log ( '자바스크립트의 출력' );
</ script >
</ body >
</ html >
f12키를 눌러 확인해보면 console 쪽에 우리가 넣은 데이터가 있다
자바스크립트 삽입 방법 1. <script> ~ </script>에 작성 2. <script src='파일명'></script> ✅자바스크립트의 실행 순서는 인터프리터 해석 방식이므로 위에서 아래로 실행 ✅ 주석문 // : 한줄 주석 /* 내용 */ : 여러줄 주석 익스텐션 설치 javascript (es6) code snippets 변수 - 데이터를 저장한 레터럴을 가리키는 메모리 공간 - 값이 변경될 수 있음 - 자바스크립트의 변수는 타입이 없음 - let 키워드를 사용하여 변수를 선언 파이썬 name= '김사과' 자바스크립트 let name = '김사과'; 아주 옛날 옛적 변수 선언 var name = '김사과'; - 유연한 변수 선언 방식 - 지역변수, 전역변수와의 구별이 없음 - 같은 이름의 변수를 선언할 수 있음 let - 지역변수, 전역변수의 구별이 확실 - 같은 이름의 변수를 선언할 수 없음
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > 변수 </ title >
</ head >
< body >
< h2 > 변수 </ h2 >
< script >
var num ;
console . log ( num );
console . log ( name );
str = '안녕하세요' ;
console . log ( str );
var str = '반갑습니다' ;
console . log ( str );
{
console . log ( num );
var num = 30 ;
console . log ( num );
}
console . log ( num );
/* var은 쓰지 말자 */
console . log ( '----------------' )
let val = 10 ;
console . log ( val );
{
let val = 20 ;
console . log ( val );
}
console . log ( val );
</ script >
</ body >
</ html >
트랜스 컴파일러 - 과거 브라우저 및 특정 브라우저 버전 등을 모두 사용할 수 있도록 해석해주는 라이브러리 - babel 등 상수(constant) - 한번 선언된 상수는 다시 재정의 할 수 없음 - 값을 재할당 할 수 없음 - 개발자의 실수를 방지하기 위해 권장 - 해킹을 방지하기 위한 목적 let name; // 변수의 선언 name = '김사과'; // 값 할당 let name = '김사과' // 변수의 선언 및 할당 const name; name = '김사과' (x) const name = '김사과' (o)
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > 상수 </ title >
</ head >
< body >
< h2 > 상수 </ h2 >
< script >
let str1 ; // 변수 선언
console . log ( str1 ) ; // undefined
str1 = '김사과' ;
console . log ( str1 ) ;
// const str2;
// console.log(str2) ;
const str2 = '김사과' ;
console . log ( str2 ) ;
// str2 = '반하나';
const obj = { id : 'apple' , name : '김사과' , gender : '여자' };
console . log ( obj . id ) ;
console . log ( obj . name ) ;
console . log ( obj . gender ) ;
obj . id = 'banana' ;
obj . name = '반하나' ;
obj . gender = '여자' ;
console . log ( obj . id ) ;
console . log ( obj . name ) ;
console . log ( obj . gender ) ;
</ script >
</ body >
</ html >
데이터 타입 (data type) - 프로그램에서 다룰 수 있는 값의 종류 - 자바스크립트는 선언시 타입을 정하지 않기 때문에 많은 문제가 발생할 수 있음 - 자바스크립트의 타입 유연성을 해결하기 위해 ms에서 만든 타입스크립트가 존재 1. 숫자형(number) - 정수와 실수를 따로 구분하지 않음 - 모든 수를 실수 하나로만 표현 2. 문자형(string) - '',"",``로 둘러싸인 문자의 집합 3. 논리형(boolean) - 참(true), 거짓(false)으로 표현되는 값 - false, 0, '', null, undefined는 모두 거짓(false)으로 판정 - false가 아닌 모든 값은 참(true)로 판정함 4. undefined - 타입이 정해지지 않은 타입(변수 선언 후 값이 정해지지 않은 경우) 5. null - null을 저장한 값 - 값이 없는 것(객체) 6. 심볼형(symbol) - 유일하고 변경 불가능한 기본값을 만듦 - 객체 속서의 key로 사용 const sym1 = symbol('apple'); const sym2 = symbol('apple'); 7. 객체형(object) - 어떤 속성을 하나의 변수에 저장할 수 있게 해주는 집합 - key value pair 구조로 저장
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > 데이터 타입 </ title >
</ head >
< body >
< h2 > 데이터 타입 </ h2 >
< script >
// number 형
const num1 = 10 ;
const num2 = 11.11 ;
const num3 = 10e6 ;
console . log ( num1 );
console . log ( num2 );
console . log ( num3 );
console . log ( typeof ( num1 ));
console . log ( typeof ( num2 ));
console . log ( typeof ( num3 ));
console . log ( '-------------' )
// string 형
const num4 = 10 ;
const num5 = 5 ;
const str1 = 'hello javascript' ;
const str2 = 'hello world' ;
const str3 = '10' ;
console . log ( num4 + num5 );
console . log ( num4 + str1 );
console . log ( str1 + str2 );
console . log ( str1 + '' + str2 );
console . log ( ` ${ str1 } ${ str2 } ` );
console . log ( '자바스크립트에서는 문자열은 큰 따옴표 또는 작은 따옴표로 둘러싸인 문자의 집합을 의미' )
console . log ( num4 + str3 );
console . log ( num4 - str3 );
console . log ( num4 * str3 );
console . log ( num4 / str3 );
console . log ( '-------------' );
// 논리형
const b1 = true ;
const b2 = false ;
console . log ( typeof ( b1 ));
console . log ( typeof ( b2 ));
console . log ( 10 > 5 );
console . log ( 10 < 5 );
console . log ( '--------------------' );
// undefined
let num ;
console . log ( num );
console . log ( typeof ( num ));
// null
let obj1 = {};
console . log ( obj1 );
console . log ( typeof ( obj1 ));
let obj2 = null ;
console . log ( obj2 );
console . log ( typeof ( obj2 ));
</ script >
</ body >
</ html >
typeof 를 써서 변수의 데이터타입을 알아볼수 있다자동 타입 변환 - 특정 타입의 값을 기대하는 곳에 다른 타입의 값이 오면 자동으로 타입을 변환해서 사용 const num4 = 10; const str3 = '10'; console.log(num4+str3); console.log(num4-str3); console.log(num4*str3); console.log(num4/str3); const ch = '삼십'; console.log(ch-num4); // nan nan(not a number) - '정의되지 않은 값이나 표현할 수 없는 값'을 의미 - 숫자로 변환할 수 없는 연산을 시도 타입변환 함수 - 강제로 타입을 변환하는 함수 number() : 문자를 숫자로 변환 string() : 숫자나 불린 등을 문자형으로 변환 boolean() : 문자나 숫자 등을 불린형으로 변환 object() : 모든 자료형을 객체형으로 변환 parseint() : 문자를 소수없는 정수형으로 변환 parsefloat() : 문자를 실수형으로 변환
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > 타입 변환 </ title >
</ head >
< body >
< h2 > 타입 변환 </ h2 >
< script >
console . log ( 10 + '문자열' );
console . log ( '3' * '5' );
console . log ( 1 - '문자열' );
const num1 = '10' ;
const num2 = '5' ;
console . log ( `현재 num1의 타입: ${ typeof ( num1 ) } ` )
console . log ( `현재 num2의 타입: ${ typeof ( num2 ) } ` )
console . log ( `Number(num1)의 타입: ${ typeof ( Number ( num1 )) } ` )
console . log ( `Number(num2)의 타입: ${ typeof ( Number ( num2 )) } ` )
console . log ( `String(num1)의 타입: ${ typeof ( String ( num1 )) } ` )
console . log ( `Boolean(num1)의 타입: ${ typeof ( Boolean ( num1 )) } , ${ Boolean ( num1 ) } ` )
console . log ( `Object(num1)의 타입: ${ typeof ( Object ( num1 )) } , ${ Object ( num1 ) } ` )
console . log ( `parseInt(num1)의 타입: ${ typeof ( parseInt ( num1 )) } , ${ parseInt ( num1 ) } ` )
console . log ( `parseFloat(num1)의 타입: ${ typeof ( parseFloat ( num1 )) } , ${ parseFloat ( num1 ) } ` )
console . log ( '------------------' )
console . log ( `num1+num2 = ${ num1 + num2 } ` );
console . log ( `num1+num2 = ${ Number ( num1 )+ Number ( num2 ) } ` );
console . log ( `num1+num2 = ${ parseInt ( num1 )+ parseInt ( num2 ) } ` );
</ script >
</ body >
</ html >
자바스크립트의 대화상자 Web API : 브라우저에서 제공하는 API(Application Programming Interface) alert(): 사용자에게 메세지를 보여주고 확인을 기다림 confirm() : 사용자에게 메세지를 보여주고 확인이나 취소를 누르면 그 결과를 불린값으로 반환 prompt: 사용자에게 메세지를 보여주고 사용자가 입력한 문자열을 반환
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > 대화상자 </ title >
</ head >
< body >
< h2 > 대화상자 </ h2 >
< script >
//alert('안녕하세요 자바스크립트');
// const result = confirm('확인 또는 취소를 눌러주세요');
// console.log(result);
// const name = prompt('당신의 이름을 입력하세요')
// console.log(typeof(name));
// console.log(name);
// const year = prompt('당신의 출생년도를 입력하세요')
// console.log(2024-year);
const num1 = prompt ( '첫번째 숫자를 입력하세요' )
const num2 = prompt ( '두번째 숫자를 입력하세요' )
console . log ( num1 + num2 );
console . log ( Number ( num1 )+ Number ( num2 ));
</ script >
</ body >
</ html >
prompt를 쓰면 다음과 같이 웹페이지를 열때 문자창이 뜬다문제. prompt로 이름, 국어점수, 수학점수, 영어점수를 입력받아 아래와 같이 총점과 평균을 출력하는 html 문서를 작성해보자. (단, console에 출력) 김사과님의 성적표 국어 : xx점 수학 : xx점 영어 : xx점 총점 : xx점 평균 : xx점
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > 문제2 </ title >
</ head >
< body >
< h2 > 문제2 </ h2 >
< script >
const name = prompt ( '이름을 입력하세요' );
const kor = Number ( prompt ( '국어점수를 입력하세요' ));
const eng = Number ( prompt ( '영어점수를 입력하세요' ));
const math = Number ( prompt ( '수학점수를 입력하세요' ));
const tot = kor + math + eng ;
const avg = tot / 3 ;
console . log ( ` ${ name } 님의 성적표` )
console . log ( `국어 : ${ kor } 점` )
console . log ( `영어 : ${ eng } 점` )
console . log ( `수학 : ${ math } 점` )
console . log ( `총점 : ${ tot } 점` )
console . log ( `평균 : ${ avg } 점` )
</ script >
</ body >
</ html >
연산자 (Operator) 1. 산술 연산자 +, -, *, /, %, ** 2. 비교 연산자 >, <, >=, <=, == !=, ===, !== === : 두 식의 값이 같아야 하고, 타입이 같아야 함 예 ) 3 == 3 -> true '3' == 3 -> true '3' === 3 -> false !== : 두 식의 값이 다르고, 타입까지 달라야 함 3. 대입 연산자 =, +=, -=, *=, /=, %=, **= 4. 증감 연산자 ++변수, --변수, 변수++, 변수-- 예 ) let num = 10 ++num // 11 num = num + 1 --num // 10 num = num - 1 num++ // 11 num = num + 1 num-- // 10 num = num - 1 let num = 10 result = ++num; // num = 11, result = 11 result = num++; // num = 12, result = 11 5. 논리 연산자 &&(and), ||(or), !(not) 6. 비트 연산자 &(and), |(or), !(not), ^(xor), <<(left shift), >>(right shiht) 7. 삼항 연산자 변수 = 조건식 ? 반환값1 : 반환값2 - 조건식의 결과가 true일 때 반환값1이 변수에 저장 - 조건식의 결과가 false일 때 반환값2가 변수에 저장 제어문 조건문 1. if 문 ✅ if(조건식){ 조건식의 결과가 true일 때 실행할 문장; ... } if(조건식){ 조건식의 결과가 true일 때 실행할 문장; ... }else{ 조건식의 결과가 false일 때 실행할 문장; ... } if(조건식1){ 조건식1의 결과가 true일 때 실행할 문장; ... }else if(조건식2){ 조건식2의 결과가 true일 때 실행할 문장; ... }else{ 모든 조건식의 결과가 false일 때 실행할 문장; ... } ✅
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > if 문 </ title >
</ head >
< body >
< h2 > if 문 </ h2 >
< script >
const age = Number ( prompt ( '나이를 입력하세요' ));
if ( age > 19 ){
console . log ( '성인입니다' );
} else if ( age > 14 ){
console . log ( '청소년입니다' );
} else if ( age > 5 ){
console . log ( '어린이입니다' );
} else {
console . log ( '유아입니다' );
}
</ script >
</ body >
</ html >
5살을 입력하니 유아입니다 라는 지정해놓은 문자가 뜬다
2. switch 문 ✅ switch(변수 또는 값){ case 값1: 변수와 값1이 같은 경우 실행할 문장; ... break; case 값2: 변수와 값2가 같은 경우 실행할 문장; ... break; ... default: 변수와 모든 값이 다를 경우 실행할 문장; ... } ✅ num = 10 switch(num) { case 5: console.log('num은 5입니다'); break ; case 10: console.log('num은 10입니다'); break; default: console,log('원하는 값이 없습니다') }
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > switch문 </ title >
</ head >
< body >
< h2 > switch문 </ h2 >
< script >
let input = prompt ( '아동, 청소년, 성인 중 하나를 고르세요' )
switch ( input ){
case '아동' :
input += ': 입장료 무료' ; //아동:입장료 무료
break ;
case '청소년' :
input += ': 입장료 5.000원' ;
break ;
case '성인' :
input += ': 입장료 10.000원' ;
break ;
default :
alert ( '입력값을 확인하세요' );
input = '입력값 확인' ;
}
console . log ( input );
</ script >
</ body >
</ html >
prompt창에서 청소년을 쓰면 지정해놓은 입장료 가격이 나온다
문제. 달(month)을 입력받아 해당 달의 마지막 일이 몇일인지 출력하는 문서를 만들어보자. (단, 입력은 prompt로 받으며, 2월의 마지막 날짜는 28일로 함)
<! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > 문제2 </ title >
</ head >
< body >
< h2 > 문제2 </ h2 >
< script >
const month = Number ( prompt ( '달을 입력하세요' ));
switch ( month ){
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
console . log ( ` ${ month } 월의 마지막일자는 31일 입니다` );
break ;
case 2 :
console . log ( ` ${ month } 월의 마지막일자는 28일 입니다` );
break ;
case 4 :
case 6 :
case 9 :
case 11 :
console . log ( ` ${ month } 월의 마지막일자는 30일 입니다` );
break ;
}
</ script >
</ body >
</ html >
내가 알고 싶은 달을 넣으면 그 달의 마지막 일수를 알려준다