CodeGym /행동 /Frontend SELF KO /재미있는 추가사항

재미있는 추가사항

Frontend SELF KO
레벨 46 , 레슨 3
사용 가능

8.1 의사난수

가끔 프로그래머는 "특정 리스트에서 저녁에 볼 무작위 영화를 선택하기", "복권 당첨자 선택하기", "스마트폰 흔들 때 노래 목록 섞기", "메시지를 암호화할 무작위 숫자 선택하기" 같은 단순해 보이는 문제를 마주할 때가 있어. 그럴 때마다 당연한 질문이 드는 거지: 그럼 무작위 숫자는 어떻게 얻지?

사실 "진짜 무작위 숫자"가 필요하다면, 그걸 얻는 건 꽤 어려워. 그래서 컴퓨터에 특별한 수학적인 보조 프로세서를 장착하기도 하는데, 이들은 진정한 무작위성을 충족하는 숫자를 생성할 수 있어.

그래서 프로그래머들은 그들만의 해결책을 고안했어 — 의사난수들. 의사난수란 일종의 시퀀스로, 겉보기에는 무작위로 보이지만, 전문가가 자세히 분석하면 특정 패턴을 찾아낼 수 있는 숫자들이야. 비밀 문서를 암호화하기에는 적합하지 않지만, 게임에서 주사위를 던지는 걸 흉내내기에는 충분해.

의사난수 시퀀스를 생성하는 알고리즘이 많이 있고, 거의 모든 알고리즘은 이전 숫자와 몇 가지 보조 숫자를 기반으로 다음 무작위 숫자를 생성해.

예를 들어, 이 프로그램은 화면에 1000개의 고유한 숫자를 출력할 거야:

JavaScript
    
      let a = 41;
      let c = 11119;
      let m = 11113;
      let seed = 1;

      function getNextRandom() {
        seed = (a * seed + c) % m;
        return seed;
      }

      for (let t = 0; t < 1000; t++) {
        let x = getNextRandom();
        console.log(x);
      }
    
  

참고로, 우리는 개별 의사난수에 대해 말하는 것이 아니라 시퀀스에 대해 이야기하는 거야, 왜냐면 개별 숫자를 보고 그게 무작위인지 아닌지 알 수 없거든.

무작위 숫자는 여러 방법으로 얻을 수 있어:

JavaScript
    
      function getNextRandom() {
        return 4; # 이건 진짜 무작위 숫자야 (나는 이 숫자를 주사위로 던졌어)
      }
    
  

8.2 switch 연산자

switch 연산자는 표현식의 값에 따라 여러 코드 블록 중 하나를 실행하는 데 사용돼. 특히 하나의 값을 여러 가능한 옵션과 비교해야 할 때 유용해.

구문:

    
      switch(expression) {
        case value1:
          // expression === value1이면 실행될 코드
          break;
        case value2:
          // expression === value2이면 실행될 코드
          break;
        // ...
        default:
          // 어떤 값도 일치하지 않으면 실행될 코드
      }
    
  

예시:

JavaScript
    
      let day = 3;
      let dayName;

      switch (day) {
        case 1:
          dayName = "월요일";
          break;
        case 2:
          dayName = "화요일";
          break;
        case 3:
          dayName = "수요일";
          break;
        case 4:
          dayName = "목요일";
          break;
        case 5:
          dayName = "금요일";
          break;
        case 6:
          dayName = "토요일";
          break;
        case 7:
          dayName = "일요일";
          break;
        default:
          dayName = "잘못된 요일";
      }

      console.log(dayName); // "수요일"
    
  

8.3 ?? 연산자

?? 연산자, 또는 nullish coalescing operator,는 좌측 피연산자가 null이거나 undefined일 때 기본값을 할당하기 위해 사용돼. 이는 0, false, 빈 문자열("") 같은 다른 falsy 값을 위한 기본값을 피할 수 있게 해줘.

구문:

    
      let result = value1 ?? value2;
    
  

만약 value1null이 아니거나 undefined가 아니라면, resultvalue1이 될 거야. 그렇지 않으면 resultvalue2가 돼.

예시들:

JavaScript
    
      let foo = null ?? 'default';
      console.log(foo); // 'default'

      let bar = 0 ?? 'default';
      console.log(bar); // 0 (0은 null이나 undefined가 아님)

      let baz = undefined ?? 'default';
      console.log(baz); // 'default'
    
  

논리적 OR (||)와의 차이점

|| 연산자도 기본값을 설정하는 데 사용될 수 있지만, 이 연산자는 0, "", NaN 같은 모든 falsy 값에 대해 오른쪽 피연산자를 반환해.

비교 예시:

JavaScript
    
      let value = 0 || 'default';
      console.log(value); // 'default' (왜냐면 0은 falsy 값이기 때문에)

      let value2 = 0 ?? 'default';
      console.log(value2); // 0 (왜냐면 0은 null이나 undefined가 아니기 때문에)
    
  

응용

?? 연산자는 null이나 undefined일 때만 기본값을 설정하고, 0이나 "" 같은 falsy 값을 유지해야 하는 상황에서 유용해.

실제 사용 예시

예시 1. 구성 객체의 기본값:

JavaScript
    
      function configure(settings) {
        settings = settings ?? {};
        let timeout = settings.timeout ?? 1000;
        let color = settings.color ?? 'blue';
        // 설정 로직의 나머지 부분
      }
    
  

예시 2. 함수의 기본 매개변수:

JavaScript
    
      function printMessage(message) {
        message = message ?? 'No message provided';
        console.log(message);
      }

      printMessage(null); // 'No message provided'
      printMessage('Hello'); // 'Hello'
    
  

?? 연산자의 사용은 더 깔끔하고 예측 가능한 코드를 작성할 수 있게 해줘, 특히 null이나 undefined 같은 무값을 고려해야 할 때 말이야.

1
Опрос
쿠키, WebStorage 그리고 Web API,  46 уровень,  3 лекция
недоступен
쿠키, WebStorage 그리고 Web API
쿠키, WebStorage 그리고 Web API
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION