논리식 (Logical)
논리식에서 거짓(false)인 8가지
1. 0
2. -0
3. ''
4. ""
5. false
6. null
7. undefined
8. NaN
AND조건, OR조건
AND 조건 : &&
OR 조건 : ||
&&는 AND 연산자로 양쪽 모두 True 여야 한다.
반면 ||은 OR 연산자로 양쪽 중 한 쪽만 True여도 True를 출력한다.
예시
*** AND조건
2&&3 : AND 조건이므로 2를 먼저 확인하여 True이면,
3 또한 확인해야합니다.
여기서는 3 또한 True이므로 마지막 값인 3이 출력된다.
0&&2 : 같은 AND 조건이지만,
앞의 0이 이미 False이기 때문에 뒷 부분과 관계없이 0이 출력된다.
'Hi'&&0 : 앞의 String은 True이므로 뒷 부분을 확인해야 합니다.
이 때 뒷 부분이 True, False 여부와 관계없이 뒷 부분에서 끝나므로
뒷부분의 값이 출력된다. (여기서는 0)
*** AND조건과 OR조건의 혼합
let a = 2&&0||7
:앞에서부터 순차적으로 논리식을 따져보면 된다.
앞쪽 2&&0은 0, 0||7 은 둘 중 True인 7이기 때문에 a = 7이 된다.
let b = 'hello'||0&&5
: AND연산자와 OR연산자가 함께 사용될 때
OR연산자가 AND연산자보다 앞에 위치한다면 AND연산자가 우선순위를 갖는다.
따라서 b에서는 뒷 부분을 먼저 확인해야하며 'hello'||false 가 되기 때문에
결과적으로 'hello'가 출력된다.
let c = false||'wow'||555&&333||true
:하지만 간단하게 생각했을 때,
AND 연산자 앞부분이 OR조건이고 그 중에 True인 값이 있다면 해당 값이 출력될 것이다.
data types
자바스크립트의 데이터 타입에는 6가지가 있다.
primitive type (원시타입)
- string => 'abc', '', ""
- number => 1, 2, 10, 12.5, Infinity, -Infinity, NaN
- boolean => true, false
- Null => null
- undefined => undefined
- symbol (ES6에서 추가)
symbol은 map이나 다른 자료구조에서 고유한 식별자가 필요하거나 동시다발적으로 발생할 수 있는 코드에서 우선순위를 주고 싶을 때 쓰이는 것
보통 식별자로 string을 사용할 때, 동일한 string을 사용한다면 다른 모듈이나 파일에서 동일한 식별자로 간주된다. 하지만 symbol을 사용하면 동일한 string을 사용하더라도 다른 것으로 간주한다.
const symbol1 = Symbol('text');
const symbol2 = Symbol('text');
console.log(symbol1 === symbol2); // false
만약 식별자가 똑같다면 동일한 symbol로 인식되게 하고 싶다면
아래와 같이 Symbol.for 를 사용해야 한다.
const gSymbol1 = Symbol.for('text');
const gSymbol2 = Symbol.for('text');
console.log(gSymbol1 === gSymbol2); // true
console.log(`value: ${gSymbol1}`); //=>error 발생
console.log(`value: ${gSymbol1.description}`);
//=>symbol을 출력할때는 .description을 사용하여 string으로 변환한 후에 출력해야 한다.
Object type
object => [], {}
primitive type은 value로 값이 저장되고, object는 object를 가리키는 reference가 memory에 저장된다.
primitive type, frozen object(i.e. object.freeze()) => Immutable data
object => Mutable
function() {}
first-class function : function도 변수에 할당이 가능하고 함수의 parameter(인자)로도 전달이 되고 return type으로도 function을 return하는 것이 가능하다.
function은 type은 아니지만 typeof로 type을 출력하면 function으로 출력된다.
NaN 은 숫자가 아니라는 의미이지만 type은 number(숫자형)이다.
'JavaScript' 카테고리의 다른 글
JS | Promise ( Producer, Consumer) (0) | 2021.12.28 |
---|---|
JS | 비동기 처리의 시작 콜백 (0) | 2021.12.27 |
JS | Array (0) | 2021.12.22 |
JS | Script option, Operator, Class and Object (0) | 2021.12.21 |
JS | clock(digital) , add back to top button (0) | 2021.12.17 |