JS 정리(2) - 기본편

2. Variables(변수)

// Boolean

/*
	Boolean : 값이 true, false 두 가지 밖에 없으며, 이 값들을 '진리값'이라고 부른다. 즉,
						진리값은 조건이 참인지 거짓인지를 나타내기 위함이다
*/
1 < 2; // true 
1 > 2; // false 
3 === 3; // true 
3 !== 3; // false 

/*
	논리 연산자 : ||(OR), &&(AND), !(NOT) 연산자가 있다
*/
// OR : 인수 중 하나라도 true이면 true를 반환하고, 그렇지 않으면 false를 반환하라
/*
	true || true // true
	true || false // true
	false || true // true
	false || false // false
*/

// AND : 두 피연산자가 모두가 참일 때 true를 반환하고, 그 외의 경우는 false를 반환하라
/*
	true && true // true
	true && false // false
	false && true // false
	false && false // false
*/

// NOT : 인수를 하나만 받고, 그 외에는 전부 다 반대로 생각하면 된다
// !true면? 반대로 false가 된다는 의미이고, !0이면? 반대로 true가 나온다는 뜻이다
/*
	Operator Precedence(연산자 우선순위)
	 - 한 구문에 여러 개의 연산자를 이어서 쓴 경우, 먼저 계산되고 나중에 계산되는 것을 말한다
   - AND가 우선이고 OR이 그 다음이다(& > | > && > ||)
*/
/*
	true || true && false; // true
	(true || true) && false; // false
	true || false && false; // true
	(true || false) && false; // false
*/
/*
	논리 연산의 여러 가지 법칙
*/
// 이중 부정
!!a === a;

// 교환 법칙
a || b === b || a;
a && b === b && a;

// 결합 법칙 
(a || b) || c === a || (b || c);
(a && b) && c === a && (b && c);

// 분배 법칙
a || (b && c) === (a || b) && (a || c);
a && (b || c) === (a && b) || (a && c);

// 흡수 법칙
a && (a || b) === a;
a || (a && b) === a;

// 드 모르간의 법칙
!(a || b) === !a && !b;
!(a && b) === !a || !b;

// 그 밖에...
a || true === true;
a || false === a;
a && true === a;
a && false === false;

a || !a === true;
a && !a === false;

a || a === a;
a && a === a;

// 다른 타입의 값을 진리값으로 변환해야 할 때
!!'hello'; // true
Boolean('hello'); // true
// !은 여집합, '||'는 합집합, '&&'는 교집합, 'true'는 전체집합, 'false'는 
//  공집합으로 생각하면 된다

3. Arrays(배열)

/*
	Array : 하나의 변수명 아래에 데이터 아이템의 리스트를 저장하는 간편한 방법을 말한다
	[] : 대괄호
*/
// 배열 전
const mon = 'mon';
const tue = 'tue';
const wed = 'wed';
const thu = 'thu';
const fri = 'fri';
const sat = 'sat';
const sun = 'sun';
// 배열 후
const week = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];

// 배열 값 가져오기
console.log(week[0]); // 'mon'

// 배열 추가
week.push('variable') -> console.log(week) 
// 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun', 'variable'

4. Objects(객체)

/*
	Objects
	 1. 키와 값으로 구성된 Property들의 집합이다.
	 2. 원시타입을 제외한 나머지 값들은 모두 객체이다.
   3. {} : 중괄호
  -> 'Property(프로퍼티)' : 프로퍼티 키로 유일하게 실별할 수 있고, 키와 프로퍼티 값으로 
													  구성되었다
														[키 : 빈 문자열을 포함하는 모든 문자열 or Symbol값]
														[값 : 모든 값]
  -> 'method(메소드)' : Property값이 함수일 경우, 일반 함수와 구분하기 위해 메소드라 부른다	
*/
// objects 전
const userName = 'kim';
const userAge = 20;
const userHandsome = true;
const userFat = 'little bit';

console.log(userName);
console.log(userAge );
console.log(userHandsome );
console.log(userFat);

// objects 전 -> array 버전
const user = ['kim', 20, true, 'liitle bit'];

console.log(user[0]); // name
console.log(user[1]); // age
console.log(user[2]); // handsome
console.log(user[3]); // fat

// objects 후
const user = {
	name : 'kim',
	age : 20,
	handsome : true,
	fat : 'little bit'
};

console.log(user.name); // kim
console.log(user.age); // 20
console.log(user.handsome); // true
console.log(user.fat); // little bit

// objects 수정 후
console.log(user.name); // kim 
console.log(user.age); // 20
console.log(user.handsome); // true
console.log(user.fat); // little bit

// String
user.name = 'joo'; // kim -> joo
console.log(user.name); // joo
// Number
user.age = user.age + 10; // 20 + 10 -> 30
console.log(user.age); // 30