개체 리터럴 - [ko-KR]을 사용하여 switch 문과 여러 "if 및 else"를 바꿉니다.



먼저 Switch 문이란 무엇입니까?



스위치는 데이터를 받는 함수이고, 그 데이터를 분석하여 이 데이터가 우리의 경우 중 하나와 같으면 그 경우에 명령을 내리고 값을 반환합니다.

function UserPolicy(type) {
  switch(type) {
    case 'admin':
      return 'This User is Admin!'
      break
    case 'client':
      return 'This User is Client!'
      break
    case 'salesman':
      return 'This User is Salesman!'
      break
    default:
      return 'Ops, this guy doesn\'t have user profile'
  }
}

UserPolicy() // 'Ops, this guy doesn't have user profile'
UserPolicy('admin') // "This User is Admin!"


if 및 else 문과 유사하지만 단일 값을 평가해야 합니다. 스위치 내부에서 케이스를 사용하여 각 값에 대해 평가합니다.

else if 문을 많이 사용하는 경우 매우 잘못된 것이며 일반적으로 목적과 의도에 더 적합한 스위치와 같은 것을 사용해야 합니다. 남용하는 경우 다음이 있습니다.

function UserPolicy(type) {
  let userType
  if (type === 'admin') {
    userType = 'This User is Admin!'
  } else if (type === 'client') {
    userType = 'This User is Client!'
  } else if (type === 'salesman') {
    userType = 'This User is Salesman!'
  } else {
    userType = 'Ops, this guy doesn\'t have user profile'
  }

  return `User is type: ${userType}`
}


스위치 문제



절차 제어 흐름에서 코드 블록을 처리하는 비표준 방식에 이르기까지 switch에는 여러 가지 문제가 있으며 나머지 JavaScript는 중괄호를 사용하지만 switch는 사용하지 않습니다. 문법적으로 이것은 JavaScript의 최고도 아니고 디자인도 아닙니다. 중단을 수동으로 추가해야 합니다. 각 케이스 내의 명령문은 어려운 디버깅으로 이어질 수 있고 잊어버리면 케이스 아래에 중첩된 오류가 발생할 수 있습니다! 우리는 이것을 주의해서 다루어야 합니다.

우리는 종종 JavaScript에서 객체 조회를 사용합니다. 종종 스위치를 사용하는 것을 고려하지 않을 것입니다. 그렇다면 스위치를 대체하기 위해 객체 리터럴을 사용하지 않는 이유는 무엇입니까? 개체는 훨씬 더 유연하고 가독성과 유지 관리가 더 좋으며 수동으로 중단할 필요가 없습니다. 각각의 경우. 그것들은 표준 객체이기 때문에 새로운 JavaScript 개발자들에게도 훨씬 친숙합니다.

스위치를 사용하지 않는 이유


  • "케이스"의 수가 증가함에 따라 개체(해시 테이블)의 성능이 스위치의 평균 비용(케이스의 문제 순서)보다 좋아집니다. 개체 접근 방식은 해시 테이블 조회이며 스위치는 일치 및 중단에 도달할 때까지 각 사례를 평가해야 합니다.
  • 유지 관리 및 읽기가 더 쉽습니다. 또한 중단에 대해 걱정할 필요가 없습니다. 통과하는 진술 및 사례 – 그냥 일반 개체입니다.

  • 일반적으로 우리는 함수 안에 스위치를 넣고 반환 값을 얻습니다. 여기서도 같은 작업을 수행하고 객체 리터럴을 반환하여 스위치 케이스를 사용 가능한 함수로 만들어 보겠습니다.

    function UserPolicy(type) {
      // We create a const that receives an object and each of its properties.
      // will be the values corresponding to our types
      const Users = {
        admin: 'This User is Admin!',
        client: 'This User is Client!',
        salesman: 'This User is Salesman!',
        default: 'Ops, this guy doesn\'t have user profile'
      }
    
      return Users[type] || Users.default
    }
    
    UserPolicy() // 'Ops, this guy doesn't have user profile'
    UserPolicy('admin') // "This User is Admin!"
    


    개요



    개체 리터럴은 JavaScript에서 보다 자연스러운 흐름 제어이며 스위치는 약간 오래되고 투박하며 어려운 디버깅 오류가 발생하기 쉽습니다. 개체는 더 확장 가능하고 유지 관리가 가능하며 훨씬 더 잘 테스트할 수 있습니다. 또한 디자인 패턴의 일부이며 다른 프로그래밍 작업에서 매일 매우 일반적으로 사용됩니다. 객체 리터럴은 함수뿐만 아니라 다른 객체 유형을 포함할 수 있으므로 매우 유연합니다! 리터럴의 각 함수에는 함수 범위도 있으므로 부모 함수에서 클로저를 반환할 수 있습니다.

    //규칙을 지시하는 것이 아닙니다. 일상적인 문제를 해결하는 또 다른 방법일 뿐입니다.

    좋은 웹페이지 즐겨찾기