ITWILL : 무한반복문, 보조제어(break와continue)문, 익명함수, 재귀함수, 지역변수를 전역에서 사용하는 방법, 내장함수
ITWILL학원 : 7강 JS기초 BY 정규태강사
1. 무한반복문
반복문이 무한으로 실행되는 반복문.
문제의 해결이 언제 끝날지 모르는 경우에 주로 사용.
예를 들어,사용자가 정답을 맞출때까지 실행하는 퀴즈프로그램을 만들었다고 생각해보자
-> 사용자가 언제 정답을 맞출수있을지 알수있을까?
-> 모른다. 따라서 계속해서 실행을 하고 있어야한다
-> 이때 무한반복문 사용
-> 답을 맞추면 끝나야하기때문에 보조제어문이 필요하다
- 실제예시 : 스마트폰의 지문인식
1 | for(;;){ |
2. 보조제어문
- break문 : 가장 가까운 반복문 하나를 탈출하는 코드다
- 즉 이중for문이면 둘 다 탈출하는 것이 아니라 가장 가까운 for문만 탈출하는 것이다
- break;의 순서에 따라 결과값이 달라지므로 위치가 중요하다
- 예를 들어 : ~까지만 해라
1 | for(let i=1; i<=10; i++){ |
아래는 for문의 조건식으 true인 무한반복문이다
무한반복문과 함께 쓰이는 경우는 아래와 같다
1 | for(let i=1;true;i++){ |
- continue문 : 해당 경우를 실행하지않고 다음 경우를 실행하는 동작
- continue조건은 빼고 반복문을 실행하는 동작.
- 예를 들어 : ~를 빼고 진행해라!할때 사용
1 | let sum=0,i=0 |
위의 두가지를 활용한 숫자퀴즈를 만들어보자
- 특정숫자 미리 지정 (1부터 100까지 중에서)
- 사용자로부터 입력 -> 미리 지정한 숫자와 큰지, 작은지 같은 지를 비교
- 큰 경우 -> “입력된 값이 큽니다” 출력
- 같은경우 -> “정답입니다 도전횟수는 땡땡입니다” 출력
- 작은 경우 -> “입력된 값이 작습니다” 출력
1 | let quiz = Math.floor(Math.random()*100); //랜덤숫자만들기 |
강사님 코드는 아래와 같다
굳이 input을 for문 밖에 두는 것이 아니라 안에 두기만 하면 되는 거였다
괜히 일일히 input = prompt를 적었다… 띠용
1 | let quiz = Math.floor(Math.random()*100); |
3. Function 함수 : 일반, 익명
함수는 절차지향언어에서 사용되고 매서드는 객체지향언어에서 사용된다.
엄밀히 따지면 다른 개념이지만 크게 보면 동일하게 사용되기도 한다.
익명함수는 보통 변수에 넣어서 사용한다
- 변수 : 데이터를 저장해서 사용하는 곳
- 함수 : 실행문을 저장해서 사용하는 곳
- 일반함수
일반적으로 함수는 아래와 같이 선언과 사용한다.
1 | //1. 일반함수 선언 |
- 익명함수
익명함수의 선언과 사용은 아래와 같다.
익명함수는 함수명이 없기때문에 변수이름으로 호출하면 된다.
보통 익명함수는 1회성으로 주로 사용한다
1 | //1. 익명함수 선언 |
4. 재귀함수
재귀함수란 다시 자기자신을 호출하는 함수이다.
재귀함수는 반복문없이 계속 반복된다 따라서 사용범위를 주의해서 사용해야한다
재귀함수는 일정크기만큼만 실행되고 자동적으로 멈춘다.
return을 이용해 함수를 탈출할수있다
1 | //1. 재귀함수 선언 |
재귀함수를 활용하여 1~10까지 숫자를 나타내는 함수예제를 보자
1 | let num=0; |
강사님은 더 짧은 코드를 썼다
나는 왜 이 코드를 못했을까?
뭔가 더 간단해보인다.
무슨 코드가 더 좋은 코드일까?
가독성이 좋지만 긴 코드 vs 가독성이 조금 떨어지지만 짧은 코드
아직 잘 모르겠다. 아마 회사 분위기에 따라 다르지 않을까?
1 | let num1 = 0; |
5. 지역변수를 전역범위에서 쓰는 방법
지역변수를 전역변수처럼 쓸 수 있을까?
정답은 예스!
return을 이용한 예시를 보자
1 | let number = 200; |
number의 값은 200이 아니라 300이 나온다.
지역변수를 함수로 만들고 그 값을 전역변수 안에 넣었기 때문이다.
6. 내장함수
자바스크립트엔진에는 내장되어있는 함수들이 있다.
예시
- String(1)
- Number(“1”) => number는 정수와 실수를 합친 것으로 표현됨
- Boolean(0) =>
- alert(“경고창”)
- prompt(“질문”, “기본값”)
- confirm() => yes, no 결정
- parseInt() => 문자데이터를 정수데이터로 변경
- parseFloat() => 문자데이터를 실수데이터로 변경