한국 블로그들을 보니 '단축 평가 값'이라고도 하던데 역시 원어의 의미가 잘 와닿는 것 같다.
short-circuit evaluation은 conditional을 공부하면서 처음 접하게 되었다. 길다란 조건문을 한 줄로 퉁칠 수 있다니 꽤나 매력적인 문법에는 틀림이 없다고 생각한다. (아직 아무것도 모르지만서도...)
let username = '';
let defaultname; // data type: undefined
if (username) {
defaultname = username; // false일 경우 username 할당
} else {
defaultname = 'Stranger'; // true일 경우 defaultname에 string 할당
}
위가 일반적인 if else 조건문이다.
그런데 위와 같은 조건문을
let username = '';
let defaultName = username || 'Stranger'
아래와 같이 두 줄로 줄일 수 있다! 어메이징
논리 연산자(이 경우에는 ||)는 왼쪽에서부터 오른쪽으로 실행되기 때문에 username이 true인지 boolean 값을 먼저 따진 다음, true이면 다음으로 넘어가지 않고 그대로 defaultname에 값이 할당된다. 나머지 expression(?)에 대해서 연산을 실행하지 않아서 short-circuit이라고 부르는 듯?
만약 username이 false일 경우 다음(논리 연산자의 오른쪽)으로 넘어가 'Stranger'가 할당되게 된다. 근데 여기서 갑자기 생긴 질문: 두 값 모두 boolean value가 false일 경우 어떻게 되는 거지?
false로 처리되는 값을 여러 개 넣어 봤는데, 무조건 오른쪽 값이 출력되는 것 같다. 왜지??? short-circuit evalution 자체가 TF에 중점을 두지 않고 앞 값이 false로 판명되면 다음 값 할당~ 이런 식으로 작동되는 건가?
이것도 질문이 필요한 부분인 것 같다^_^ 개발자분께 질문해야지 개발자분들 진짜 넘 친절하게 가르쳐 주시는 것 같다 나도 나중에 그런 개발자가 되어야지!
'개발 일기' 카테고리의 다른 글
[Javascript] const에 함수를 할당하니까 갑자기 argument를 받을 수 있게 되었다,,, 띠용 / parameter와 argument의 차이 (1) | 2022.09.21 |
---|---|
[Javascript] hoisting을 방지하기 위해서 function declaration보다 function expression을 활용하는 게 나을까? (1) | 2022.09.21 |
[Javascript] visual studio 2022 설치 방법 (1) (1) | 2022.09.20 |
[JavaScript] If else와 Ternary Operator는 어떻게 다를까? (0) | 2022.09.17 |
[JavaScript] empty string('')의 boolean value (0) | 2022.09.17 |