JavaScript const 떡칠하기

변수를 선언하다 보면 const로 선언할 수 없는 것 처럼 보이는 다음과 같은 상황이 있다.

let formClassStr = 'form-group ';
if (!this.state.shouldWaitForError && dirty && invalid) {
  formClassStr += 'has-error';
}

하지만 여기서 IIFE(Immediately Invoked Function Expression)을 사용하면 아주 간단하게 const로 바꿀 수 있다.

const formClassStr = (() => {
  let tempClassStr = 'form-group ';
  if (!this.state.shouldWaitForError && dirty && invalid) {
    tempClassStr += 'has-error';
  }
  return tempClassStr;    
})(); 

요즘 대세는 immutable이잖아?ㅎㅎ. 최대한 const로 떡칠을 하고 싶다는 생각에 꾀주머니를 굴려보니 보기는 좀 더러워도 결과는 만족스럽다.

//1
const formClassStr = !this.state.shouldWaitForError && dirty && invalid ? 'form-group' : 'form-group has-error';

//2
/* eslint-disable no-nested-ternary */
const baseExchangeRate =
  rc === 'PH' ? rates.php_krw :
  rc === 'VN' ? rates.vnd_krw :
  rc === 'ID' ? rates.idr_krw :
  rc === 'JP' ? rates.jpy_krw : null;
/* eslint-enable no-nested-ternary */

더 생각해봤는데 삼항 연산자로도 가능한 것 같다.

Leave a Reply