js-tutorial-4

dev-riverkim·2023년 7월 7일
0
// 7_operators.js

/**
 * Operators
 * 
 * 연산자
 */

/**
 * 산술 연산자
 * 
 * 1) 덧셈
 * 2) 뺄셈
 * 3) 곱셈
 * 4) 나눗셈
 * 5) 나머지
 */
console.log(10 + 10); // 20
console.log(10 - 10); // 0
console.log(10 * 10); // 100
console.log(10 / 10); // 1
console.log(10 % 10); // 나머지  0
console.log(10 % 3); // 1

console.log('-----------');

console.log(10 * (10 + 10)); // 200

/**
 * 증가와 감소
 */
let number = 1;

number++;
console.log(number); // 2

number--; 
console.log(number); // 1
console.log('---------');

/**
 * 연산자의 위치
 */
let result = 1;
console.log(result); // 1



console.log(number) // 1
result = number++; 
// number++를 하기 전의 값을 result에 저장
// ++ 연산 전의 값을 result 에 할당
// =(대입) 연산자가 먼저 실행된 것

console.log(number, result) // 2 1
console.log(result, number); // 1 2

result = number--;
// result = 2를 넣은 다음
// number-- 가 실행
console.log(result, number); // 2 1


// ++ 를 앞에 둘 경우에는
// 먼저 증가를 시킨다음에
// 대입 연산자 실행(값을 저장)
// 실무에서 사용 X
result = ++number;
console.log(result, number); // 2 2

result = --number;
console.log(result, number); // 1 1

/**
 * 숫자 타입이 아닌 타입에 +, - 사용하면 어떻게될까?
 */
let sample = '99';

console.log(+sample); // 99
console.log(typeof +sample); // number

console.log(sample); // 99
console.log(typeof sample); // string

sample = true;
console.log(+sample); // 1
console.log(typeof +sample); // number

sample = false;
console.log(+sample); // 0
console.log(typeof +sample); // number

sample = '안유진';
// NaN -> Not a Number
console.log(+sample); //NaN

sample = '99';
console.log(-sample); // -99
console.log(typeof -sample); // number

/**
 * 할당 연산자 (assignment operator)
 * 계산한 뒤 다시 저장한다.
 */
number = 100;
console.log(number); // 100

number += 10;
console.log(number); // 110

number -= 10;
console.log(number); // 100

number *= 10;
console.log(number); // 1000

number /= 10;
console.log(number); // 100

number %= 10; 
console.log(number); // 0

/**
 * 비교 연산자
 * 
 * 1) 값의 비교
 * 2) 값과 타입의 비교
 * 실무에서는 대부분 === 을 사용
 */

console.log(5 == 5);  // true
console.log(5 == '5'); // true
console.log(0 == ''); // true
console.log(true == 1);  // true
console.log(false == 0); // true
console.log(true == '1'); // true

console.log(5 === 5); // true
console.log(5 === '5'); // false
console.log(0 === '');  // false
console.log(true === 1); // false
console.log(false === 0); // false
console.log(true === '1'); // false

console.log('------------');

console.log(5 != 5); // false
console.log(5 != '5');  // false
console.log(0 != ''); // false
console.log(true != 1); // false
console.log(false != 0); // false
console.log(true != '1'); // false

console.log('-------------')

console.log(5 !== 5); // false
console.log(5 !== '5'); // true
console.log(0 !== ''); // true
console.log(true !== 1); // true
console.log(false !== 0); // true
console.log(true !== '1'); // true

console.log('------------');

/**
 * 대소 관계 비교 연산자
 */
console.log(100 > 1); // true
console.log(100 < 1); // false
console.log(100 <= 1); // false
console.log(100 >= 1); // true

/**
 * 삼항 조건 연산자 (ternary operator)
 */
console.log(10 > 0 ? '10이 0보다 크다' : '10이 0보다 작다'); // 10이 0보다 크다

console.log('------------');
/**
 * 논리 연산자
 * 
 * 1) && (and)
 * 2) || (or)
 */

// && 조건은 모두 true여야 true를 반환한다.
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false

console.log('------------');

// ||는 하나만 true여도 true를 반환한다.
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false
console.log('------------');

console.log(10 > 1 && 20 > 2); // true
console.log(10 < 1 && 20 > 2); // false
console.log(10 < 1 && 20 < 2); // false

console.log(10 > 1 || 20 > 2); // true
console.log(10 < 1 || 20 > 2); // true
console.log(10 < 1 || 20 < 2); // false

/**
 * 단축평가 (short circuit evaluation)
 * 
 * 외워야 함
 * 실무에서 많이 사용
 *
 * &&를 사용했을때 좌측이 true면 우측 값 반환
 * &&를 사용했을때 좌측이 false면 좌측 값 반환
 * ||를 사용했을때 좌측이 true면 좌측 값 반환
 * ||를 사용했을때 좌측이 false면 우측 값 반환
 */
console.log('------------');

console.log(true || '아이브'); // true
console.log(false || '아이브'); // 아이브
console.log(false && '아이브'); // false
console.log(true && '아이브'); // 아이브

console.log(true && true && '아이브'); // 아이브
console.log(true && false && '아이브'); // false

/**
 * 지수 연산자
 */
console.log(2 ** 2); // 4
console.log(10 ** 3); // 1000

/**
 * null 연산자
 * node 버전 14이후로 실행되는 듯
 */
let name;
console.log(name); // undefined

name = name ?? 'riverkim';
console.log(name); // riverkim

name = name ?? '아이브';
console.log(name); // riverkim

let name2;
name2 ??= 'river';
console.log(name2); // river
profile
dev-riverkim

0개의 댓글