11# 논리 연산자
22
3- 자바스크립트엔 세 종류의 논리 연산자 ` || ` (OR), ` && ` (AND), ` ! ` (NOT)이 있습니다.
3+ 자바스크립트엔 세 종류의 논리 연산자 ` || ` (OR), ` && ` (AND), ` ! ` (NOT)이 있습니다.
44
55연산자에 '논리'라는 수식어가 붙긴 하지만 논리 연산자는 피연산자로 불린형뿐만 아니라 모든 타입의 값을 받을 수 있습니다. 연산 결과 역시 모든 타입이 될 수 있습니다.
66
@@ -31,8 +31,8 @@ alert( false || false ); // false
3131
3232피연산자가 불린형이 아니면, 평가를 위해 불린형으로 변환됩니다.
3333
34- 예를 들어, 연산 과정에서 숫자 ` 1 ` 은 ` true ` 로, 숫자 ` 0 ` 은 ` false ` 로 바뀌죠.
35-
34+ 예를 들어, 연산 과정에서 숫자 ` 1 ` 은 ` true ` 로, 숫자 ` 0 ` 은 ` false ` 로 바뀌죠.
35+
3636``` js run
3737if (1 || 0 ) { // if( true || false ) 와 동일하게 동작합니다.
3838 alert ( ' truthy!' );
@@ -103,7 +103,7 @@ alert( undefined || null || 0 ); // 0 (모두 falsy이므로, 마지막 값을
103103
104104 ` firstName ` , ` lastName ` , ` nickName ` 이란 변수가 있는데 이 값들은 모두 옵션 값이라고 해봅시다.
105105
106- OR ` || ` 을 사용하면 실제 값이 들어있는 변수를 찾고, 그 값을 보여줄 수 있습니다. 변수 모두에 값이 없는 경우엔 ` 익명 ` 를 보여줍시다.
106+ OR ` || ` 을 사용하면 실제 값이 들어있는 변수를 찾고, 그 값을 보여줄 수 있습니다. 변수 모두에 값이 없는 경우엔 ` 익명 ` 를 보여줍시다.
107107
108108 ``` js run
109109 let firstName = " " ;
@@ -116,20 +116,20 @@ alert( undefined || null || 0 ); // 0 (모두 falsy이므로, 마지막 값을
116116 ```
117117
118118 모든 변수가 falsy이면 ` "익명"` 이 출력되었을 겁니다.
119-
119+
1201202. ** 단락 평가**
121121
122122 OR 연산자 ` ||` 가 제공하는 또 다른 기능은 ' 단락 평가(short circuit evaluation)' 입니다.
123-
124- 위에서 설명해 드린 바와 같이 OR ` ||` 은 왼쪽부터 시작해서 오른쪽으로 평가를 진행하는데, truthy를 만나면 나머지 값들은 건드리지 않은 채 평가를 멈춥니다. 이런 프로세스를 ' 단락 평가' 라고 합니다.
123+
124+ 위에서 설명해 드린 바와 같이 OR ` ||` 은 왼쪽부터 시작해서 오른쪽으로 평가를 진행하는데, truthy를 만나면 나머지 값들은 건드리지 않은 채 평가를 멈춥니다. 이런 프로세스를 ' 단락 평가' 라고 합니다.
125125
126126 단락 평가의 동작 방식은 두 번째 피연산자가 변수 할당과 같은 부수적인 효과(side effect)를 가지는 표현식 일 때 명확히 볼 수 있습니다.
127127
128- 아래 예시를 실행하면 첫 번째 메시지는 출력되지만, 두 번째 메시지는 출력되지 않습니다 .
128+ 아래 예시를 실행하면 두 번째 메시지만 출력됩니다 .
129129
130130 ` ` ` js run no-beautify
131- *!*true*/!* || alert("printed");
132- *!*false*/!* || alert("not printed");
131+ *!*true*/!* || alert("not printed");
132+ *!*false*/!* || alert("printed");
133133 ` ` `
134134
135135 첫 번째 줄의 ` ||` 연산자는 ` true` 를 만나자마자 평가를 멈추기 때문에 ` alert` 가 실행되지 않습니다.
@@ -153,7 +153,7 @@ alert( true && false ); // false
153153alert( false && false ); // false
154154` ` `
155155
156- 아래는 ` if` 문과 AND 연산자를 함께 활용한 예제입니다.
156+ 아래는 ` if` 문과 AND 연산자를 함께 활용한 예제입니다.
157157
158158` ` ` js run
159159let hour = 12;
0 commit comments