JS 챌린지 5일차 (TIL)

송채원·2025년 3월 17일
0

Part 9. 반복문

9-1 while문

특정 조건이 만족되는 동안 일정 코드를 반복적으로 실행하도록 하는 구문
실행 순서:
1) while문의 조건 검사
2) 만족 시 중괄호({})안의 코드를 실행
3) 다시 while문의 조건 검사
4) 조건 만족 시 반복
5) 조건 불만족 시 종료

while( /*조건식*/ ){
    /* 반복 실행될 코드 */
}

📚무한루프에 빠지는 문제
continue: continue를 만나면 아래의 코드를 수행하지 않고 while 문의 조건을 판단하는 곳으로 넘어감.
break : 반복문의 바깥으로 나가도록(종료하도록) 프로그래밍할 때 사용

9-2 do-while문

최초 한 번은 항상 실행되도록 하는 구문(한 번 실행 후 조건식 검증)
✔️while vs do-while

  • while: 조건식이 거짓이면 반복문 실행하지 않고 빠져나옴
  • do-while: 조건식에 관계없이 최소 한 번은 반복문을 실행함

9-3 for문

초기구문, 업데이트 구문, 반복조건을 한 구문에 합친 반복문

for(초기구문; 조건식; 업데이트 구문(변수 증감식)) {
  //반복문
}

9-4 for in문

객체의 각 변수에 접근할 수 있는 반복문
object에 사용할 수 있는 반복문이다.

for (변수 in 객체){
//객체의 속성에 대한 코드
}

✔️for vs for in

  • for: 리스트의 인덱스를 통해 값에 접근하는 방식(주소를 사용)
  • for in: 리스트의 값 자체에 접근하는 방식

Part 10. 더 알아보기

10-1 변수의 scope

선언한 변수가 유효한 영역

function a(){
  var v_a="a"; //외부 변수에 접근 불가
  
  function b(){
    var v_b="b"; //모두 접근 가능
  }
}
var v="v"; //v 제외 모두 접근 불가

변수의 scope는 function scope를 따름.
-> 객체(변수)는 선언된 함수 안에서만 접근이 가능하다.

10-2 변수의 shadowing(변수 가리기)

내부 블록에서 외부 블록과 동일한 이름의 변수를 선언하는 경우 발생하는 현상
-> 함수 밖의 변수는 잠시 가려짐
함수 밖 변수의 값은 변하지 않음
함수에서 빠져나오면 다시 해당 변수에 접근 가능
실습

function shadowing(){
    var val = 1;             // 함수 밖의 변수와 이름이 같은 변수를 선언
    console.log("F", val);   // val은 함수 안의 val을 사용, 1이 출력
    val++;
}

var val = 0;
shadowing();
console.log("O", val);
// 함수를 빠져나오면서 함수 밖의 val을 사용하므로 0이 출력

10-3 method, this

  • 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
    자기 자신의 참조값(객체의 이름 대신 사용하는 것)
    ** 메서드를 호출할 때 this의 값은 인스턴스화 된 객체(해당 메서드를 호출한 객체)를 참조한다.

10-4 closure

클로저란?
외부 함수가 종료되어도 내부 함수가 외부의 지역 변수를 참조할 수 있음
(선언된 당시의 환경을 기억하는 함수)

  • 상태 유지
    : 현재 상태를 기억하고, 변경된 최신 상태를 유지함
  • 정보 캡슐화
    : 클로저의 내부에서만 사용되는 전용 함수를 만들 수 있다.
    참조
    https://poiemaweb.com/js-closure

Part 11. 연습문제

평균구하기

문제: 정수를 담고 있는 배열 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;
}

0개의 댓글

관련 채용 정보