최대 1 분 소요

Short circuit evaluation

논리연산을 할 때 왼쪽 식부터 차례대로 논리평가를 하다가 만약 결과가 false일 경우 우측에 있는 식을 검증하지 않고 끝나는 것을 뜻한다. 왜 이런 것이 있을까 생각해보면 답은 간단하다. 이미 논리연산의 결과가 나왔기에 남은 논리평가를 실행할 이유가 없기 때문이다.

if(v[0] != 0 && v[3] == 5){}

v의 length가 0일경우 만약 우측 논리 평가를 한다면 에러가 나올 테지만 v[0]이 0일 경우 false가 되고 AND(&&)연산자라 우측이 true,false 뭐가 되든 false일 테니 우측은 볼필요 없기에 생략한다.

이렇듯 뒤의 계산의 결과 값이 어떻든 이미 값이 정해져서 논리평가를 생략하는 것이 짧은 순회 평가다.


발생하는 경우

  • false && true or false
  • true && true or false
  • false || true or false
  • true || true or false

빨간색 포인트가 생략되는 부분이다.

주의사항

만약 생략되는 구간에 command 함수가 들어가면 함수가 실행이 되지 않아 로직이 깨지는 side effect가 생길 수 있다. 이런 경우는 if 문 안이 아닌 밖에서 따로 실행 해줘야 한다.


댓글남기기