자바스크립트 문법
- try, catch
try {
let num=20;
printMessage(num);
console.log('수행완료');
} catch (e) {
console.log(e.name);
console.log(e.message);
}
console.log('프로그램 종료');
//
ReferenceError
printMessage is not defined
프로그램 종료
=> 자바와 달리 예외 종류가 구체적으로 정의돼있지 않음
- 함수
//선언적 함수
function message(data){
console.log(data,'코로나 조심합니다');
}
//표현식 함수
const corona=function(){
console.log('오늘의 코로나 발생 현황 1111');
}
//화살표 함수
const message2=(data)=>{
console.log('금요일부터 %s까지 쉽니다',data);
}
corona();
message('모두');
message2('일요일');
//
오늘의 코로나 발생 현황 1111
모두 코로나 조심합니다
금요일부터 일요일까지 쉽니다
- 리턴값 있는 함수
function sum(a,b){
const result=a+b;
return result;
}
const value=sum(2,4);
console.log(value);
- 함수를 변수에 전달하기
function message(data){
console.log(data,'코로나 조심합니다');
}
const msg=message; //함수를 변수에 전달 (message 뒤 괄호 없으므로 함수 호출 X)
console.log(msg); //[Function: message]
msg('아자아자'); //아자아자 코로나 조심합니다
- 문제 : forEach, bactic 이용해 학생들 점수에 따른 등급 출력
const students=[
{name:'김철수',score:80},
{name:'이영희',score:90},
{name:'홍길동',score:60},
{name:'박찬호',score:89},
{name:'손흥민',score:46}
];
//등급 구하는 함수
const getDegree=(score)=>{
switch(Math.floor(score/10)){
case 10, 9:
return 'A';
break;
case 8:
return 'B';
break;
case 7:
return 'C';
break;
case 6:
return 'D';
break;
default:
return 'F';
}
}
//모든 학생들의 등급 출력
students.forEach((student)=>{
const result=`${student.name} 성적 : ${getDegree(student.score)}`;
console.log(result);
})
//
김철수 성적 : B
이영희 성적 : A
홍길동 성적 : D
박찬호 성적 : B
손흥민 성적 : F
- 화살표 함수
const hello=()=> console.log('안녕하세요'); //중괄호 생략
const sum=(a,b)=> a+b; //return 생략
const hello2=name=>console.log(`${name}님 안녕하세요`); //파라미터 괄호 생략
- 문제 : 화살표 함수 이용해 이름, 총점 출력
=> 내답변
const students=[
{name:'김철수',kor:80,eng:70,mat:87},
{name:'이영희',kor:100,eng:98,mat:90},
{name:'홍길동',kor:90,eng:56,mat:70}
];
//총점 구하는 함수
const total = student => student.kor+student.eng+student.mat
//forEach 이용해 이름, 총점 출력
students.forEach((student) => {
console.log(`${student.name} 점수 총합 : ${total(student)}`);
}
);
=>예시답변
const students=[
{name:'김철수',kor:80,eng:70,mat:87},
{name:'이영희',kor:100,eng:98,mat:90},
{name:'홍길동',kor:90,eng:56,mat:70}
];
//총점 구하는 함수
const total = (k,e,m) => k+e+m;
//forEach 이용해 이름, 총점 출력
students.forEach((student) => {
console.log(`${student.name} 점수 총합 : ${total(student.kor,student.eng,student.mat)}`);
}
);
- callback 함수 : 다른 함수의 파라미터로 전달되어, 특정 이벤트 발생 시 호출되는 함수
const plus=(num1,num2)=>{
return num1+num2;
}
const minus=(num1,num2)=>{
return num1-num2;
}
const calc=(num1,num2,func)=>{ //파라미터로 함수 전달
return func(num1,num2);
}
let p=plus;
console.log('plus 타입은 :',typeof plus);
console.log('p 타입은 :',typeof p);
console.log('두 수의 합=%d',p(20,30));
console.log('두 수의 합=%d',calc(40,30,minus)); //minus가 callback함수로 사용됨
//
plus 타입은 : function
p 타입은 : function
두 수의 합=50
두 수의 합=10
const sum=(num1,num2)=>num1+num2;
const print = result => console.log(`결과는 ${result}입니다`);
const sumAndPrint=(result,callback)=>{ //(값,함수)
callback(result);
}
sumAndPrint(sum(20,30),print); //print: callback 함수
//
결과는 50입니다
- 함수의 유효 범위 (scope)
- 전역 변수
let resultSubtract;
const subtract=(a,b)=>resultSubtract=a-b;
subtract(200,100);
console.log(resultSubtract); //100
함수 외부에 변수가 선언돼있으므로(전역변수) 함수 내부에서 계산된 결과가 전역변수로 전달됨
- 지역 변수
const multiply=(a,b)=>{
let result=a*b;
return result; //지역변수를 바깥으로 리턴하므로 오류 X
}
const r=multiply(10,10);
console.log(r) //100
const sum=(a,b)=>{let resultSum=a+b;} //리턴 없는 지역변수
sum(20,30);
console.log(resultSum); //오류
- 내장 객체
- Math.random
const dice=()=>Math.floor(Math.random()*6)+1;
console.log('주사위값 :',dice()); //1~6
//const makeRandom=()=>Math.floor(Math.random()*11)+30;
//console.log('30~40 난수값 :',makeRandom());
const makeRandom=(start,end)=>Math.floor(Math.random()*(end-start+1))+start;
console.log('30~40 난수값 :',makeRandom(30,40)); //30~40
※ Math 클래스 메소드
round (반올림)
ceil (올림)
floor (내림)
truc (버림)
pow (지수승)
sqrt (제곱근)
cbrt (세제곱근)
sign (사인값) => 양수 입력시 1 출력, 음수 입력시 -1 출력
- replace, split
const str='comffter';
const repStr=str.replace('ff','pu'); //replace(a,b) : a를 b로 대체
console.log(repStr); //computer
const str2='(hello)';
const repStr2=str2.replace('(','{').replace(')','}');
console.log(repStr2); //{hello}
const names='홍길동,이영희,김철수';
const na=names.split(','); //split(a) : a 기준으로 나눠 배열화
console.log(na[0]); //홍길동
const dateString='2022-08-10T19:36:20';
const today=dateString.split('T');
console.log('오늘 날짜: %s',today[0]);
console.log('현재 시간: %s',today[1]);
- Number : 문자열 -> 숫자
문자열 전체가 숫자로 구성되어야 함
cf. Integer.parse : 문자->정수 / 문자열 안에 숫자+문자 -> 숫자 부분만 따로 가져옴
const products=[
{no:1, name:'티셔츠',price:'30000'},
{no:2, name:'청바지',price:'40000'},
{no:3, name:'반바지',price:'25000'},
{no:4, name:'신발',price:'120000'},
{no:5, name:'팔찌',price:'14000'},
];
//매출 총판매액
let total=0;
products.forEach(product => {
total+=Number(product.price); //문자열->숫자 변환
});
console.log(total);
- 정규 표현식
참고:
https://hamait.tistory.com/342
정규표현식 (Regex) 정리
정규표현식은 아주 가끔 쓰기때문에 항상 다시 볼때마다 헷갈리곤 하는데.. 주요 사용예를 정리하여 보았다. 나중에 찾아보기 편하라고~ 정규 표현식의 용어들정규 표현식에서 사용되는 기호를
hamait.tistory.com
const str="<h1>안녕하세요</h1>";
const result=str.replace(/<h1>/g,'').replace(/<\/h1>/g,''); //슬래쉬 안 문자 선택 //g: 전역검색
console.log(result); //안녕하세요
const str2='<h1>특별가 - </h1><h2>55,000원</h2>';
const result2=str2.replace(/<..>/g,'').replace(/<...>/g,''); //문자 2개 //문자 3개
console.log(result2); //특별가 - 55,000원
const str3='<div>특별가 - <h2>55,000원</h2></div>';
const result3=str3.replace(/<.{0,4}>/g,''); //문자 0~4개
console.log(result3); //특별가 - 55,000원
const str4='/정상가/- 4000원 (특별,할인가- 2300원)';
const result4=str4.replace(/[\/()\-]/g,''); // / or ( or ) or - 선택
console.log(result4); //정상가 4000원 특별,할인가 2300원
const text='hello my name is gildong';
const matched=text.match(/[a-i]{1,2}/g);
//match() : 파라미터와 일치하는 문자열 추출 (두 개 이상 시 배열화) //a~i 사이 1~2글자 문자 선택
console.log(matched);
//[
'he', 'a', 'e',
'i', 'gi', 'd',
'g'
]
'Programming > 국비학원' 카테고리의 다른 글
220817 - 자바스크립트 -함수 합성, 커링, sort, filter, map, reduce, 파일 저장/불러오기/수정/추가 (0) | 2022.08.17 |
---|---|
220811 - 자바스크립트 - 함수, 배열, 클로저 (0) | 2022.08.12 |
220809 - 자바스크립트 - 기초 문법, JSON 표기법 (0) | 2022.08.10 |
220808 - 리액트 - redux, es6 (0) | 2022.08.09 |
220805 - 리액트 - 생명주기, AJAX (0) | 2022.08.06 |