특정 조건이 만족되는 동안 일정 코드를 반복적으로 실행하도록 하는 구문
실행 순서:
1) while문의 조건 검사
2) 만족 시 중괄호({})안의 코드를 실행
3) 다시 while문의 조건 검사
4) 조건 만족 시 반복
5) 조건 불만족 시 종료
while( /*조건식*/ ){
/* 반복 실행될 코드 */
}
📚무한루프에 빠지는 문제
continue
: continue를 만나면 아래의 코드를 수행하지 않고 while 문의 조건을 판단하는 곳으로 넘어감.
break
: 반복문의 바깥으로 나가도록(종료하도록) 프로그래밍할 때 사용
최초 한 번은 항상 실행되도록 하는 구문(한 번 실행 후 조건식 검증)
✔️while vs do-while
초기구문, 업데이트 구문, 반복조건을 한 구문에 합친 반복문
for(초기구문; 조건식; 업데이트 구문(변수 증감식)) {
//반복문
}
객체의 각 변수에 접근할 수 있는 반복문
object
에 사용할 수 있는 반복문이다.
for (변수 in 객체){
//객체의 속성에 대한 코드
}
✔️for vs for in
선언한 변수가 유효한 영역
function a(){
var v_a="a"; //외부 변수에 접근 불가
function b(){
var v_b="b"; //모두 접근 가능
}
}
var v="v"; //v 제외 모두 접근 불가
변수의 scope는 function scope를 따름.
-> 객체(변수)는 선언된 함수 안에서만 접근이 가능하다.
내부 블록에서 외부 블록과 동일한 이름의 변수를 선언하는 경우 발생하는 현상
-> 함수 밖의 변수는 잠시 가려짐
함수 밖 변수의 값은 변하지 않음
함수에서 빠져나오면 다시 해당 변수에 접근 가능
실습
function shadowing(){
var val = 1; // 함수 밖의 변수와 이름이 같은 변수를 선언
console.log("F", val); // val은 함수 안의 val을 사용, 1이 출력
val++;
}
var val = 0;
shadowing();
console.log("O", val);
// 함수를 빠져나오면서 함수 밖의 val을 사용하므로 0이 출력
method(기능)
function f(){
console.log("f is called");
}
var o={name:"object", method:f}; //객체"object"
f();
o.method(); //객체에 bind된 method로서 호출-> f is called 출력
** 일반적인 함수를 호출할 때, 해당 함수 내부에서 사용된 this는 전역객체에 바인딩된다.
this
클로저란?
외부 함수가 종료되어도 내부 함수가 외부의 지역 변수를 참조할 수 있음
(선언된 당시의 환경을 기억하는 함수)
문제: 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
✏️solution
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// arr_len은 배열 arr의 길이
double solution(int arr[], size_t arr_len) {
double sum=0;
for(size_t i = 0; i < arr_len; i++) {
sum += arr[i]; // 배열의 모든 원소를 합산
}
return sum / arr_len;
}