ex)
const string1 = "Hello"; // 큰따옴표
const string2 = 'Hello'; // 작은따옴표
const string3 = `Hello ${string1} ?!`; // 백틱
console.log(string3);
ex)
const number = 123; // 양수
const number = -123; // 음수
const pi = 3.14 // 실수(부동소수점)
console.log((0.1+0.2).toFixed(1)); // 첫번째 자리까지만 출력
→ 위의 타입은 string임console.log(Number((0.1+0.2).toFixed(1)));
ex)
const a = true // 참
const b = false // 거짓
→ boolean에는 true, false 두 가지 값만 존재
ex)
let age = null;
console.log(age); // null
setTimeout(function () {
age = 85;
console.log(age); // 85
},1000);
ex)
let age;
console.log(age); // undefined
setTimeout(function () {
age = 85;
console.log(age); // 85
},1000);
null: 명시적으로 개발자가 값이 없다는 것을 나타냄
undefined: 암시적으로 값이 없다는 것을 의미
ex)
const user = {
name: '홍길동',
age : 85,
phone: null
}
console.log(user.name); // 홍길동
console.log(user.age); // 85
console.log(user.email); // undefined
console.log(user.phone); // null
ex)
const fruits = ['Apple', 'Banana', 'Cherry'];
console.log(fruits); // ['Apple', 'Banana', 'Cherry']
배열.length
: 배열의 길이 확인(아이템의 개수 확인)console.log(fruits[2]); // Cherry
ex) 생성자 함수 방식으로 객체 생성
const user = new Object();
user.name = '홍길동';
user.age = 85;
console.log(user);
ex) 함수 내부에서 this 사용하여 객체 생성
function User() {
this.name = '홍길동',
this.age = 85
}
const user = new User();
console.log(user);
ex) 중괄호 기호를 사용한 리터럴 방식으로 객체 생성
const user = {
name: '홍길동',
age: 85
};
console.log(user); // {name: '홍길동', age: 85}
console.log(user.name); // 홍길동
console.log(user['name']); // 홍길동 → 대괄호 표기법(변수로 인덱싱할 때 사용)
const userA = {
name: '홍길동',
age: 85
};
const userB = {
name: '김철수',
age: 22,
parent: userA
};
console.log(userB);
// {name: '김철수', age: 22, parent: {name: '홍길동', age: 85}}
console.log(userB.parent);
// {name: '홍길동', age: 85}
console.log(userB.parent.age); // 85
console.log(userB['parent']['age']); // 85
const users = [userA, userB]
console.log(users[0]); // {name: '홍길동', age: 85}
ex)
function hello() {
console.log('Hello!');
}
hello(); // Hello!
function getNumber() {
return 123;
}
console.log(getNumber()); // 123
console.log(typeof getNumber); // function
console.log(typeof getNumber()); // number
const getNumber = function () { // 익명함수(함수 이름이 없는 경우)
return 123;
}
console.log(getNumber()); // 123
console.log(typeof getNumber); // function
console.log(typeof getNumber()); // number
const a = function () {
console.log('A');
}
const b = function (c) {
console.log(c); // a 함수 출력
c(); // a 함수 내 내용 출력
}
b(123); // 123
b(a);
/* f () {
console.log('A');
}
A
*/
const a = 1; // Number
const b = '1'; // String
console.log(a === b); // false
console.log(a == b); // true
❗️ ===
vs ==
===
(일치 연산자): 정확하게 데이터가 같은지 비교(형, 데이터 값)
==
(동등 연산자): 형 변환이 일어나 값 동등한지 비교 → 다른 데이터 형태라도 true로 나올 수 있다.
ex)
if(true) {
console.log('참');
}
// 참
if(false) {
console.log('거짓');
}
const fruits = ['Apple', 'Banana'];
const fruits2 = [];
if(fruits) {
console.log('아이템이 들어있음');
} // 아이템이 들어있음
if(fruits2.length){
console.log('아이템이 들어있음');
}
ex)
const a = 123;
console.log(typeof a); // number
console.log(typeof 'Hello'); // string
console.log(typeof null); // object
console.log(typeof []); // object
console.log(typeof {}); // object
console.log(typeof function () {}); // function
console.log([].constructor); // Array
console.log({}.constructor); // Object
console.log(Object.prototype.toString.call(null)); // [object Null]
console.log(Object.prototype.toString.call(null).slice(8, -1)); // Null
typeof 확인할 데이터
→ 확인할 데이터의 타입 확인[].constructor
→ Array 타입 확인{}.constructor
→ Object 타입 확인Object.prototype.toString.call(null).slice(8, -1)
→ Null 타입 확인/* 데이터 타입 확인 함수 */
function checkType(data) {
return Object.prototype.toString.call(data).slice(8,-1);
}
console.log(checkType('Hello')); // Hello
console.log(checkType(123)); // 123
console.log(checkType(false)); // false
console.log(checkType(undefined)); // undefined
console.log(checkType(null)); // null
console.log(checkType([])); // Array
console.log(checkType({})); // Object
console.log(checkType(function () {})); // function