1. js 기초 : 연산자, 데이터 타입 확인, 함수, 배열, 객체, 익명함수 ..
* javascript의 표준 이름 : ECMA 스크립트(ES)
* 백틱
const string3 = `Hello ${string1} ?!`; //템플릿 리터럴, 보간, 데이터를 문자에 채울때 백틱
* 부동소수점 오류
const a = 0.1;
const b = 0.2;
console.log(a + b); // 0.30000004이런식으로 뜸 -> 부동소수점 오류
//컴퓨너는 0과 1의 이진수를 사용하기 때문에 10진수(숫자)를 2진수로 변환하는 과정에서 무한 소수점 발생
//이것을 유한하게 표현하기 위해서 세부적인 값에 초과나 손실로 계산 오류 발생
* toFixed
console.log((a + b).toFixed(1)); //소수점 첫째자리만 나오게 하기 위해 인수로 1
//toFixed는 숫자데이터를 문자데이터로 바꿈
console.log(typeof (a + b).toFixed(1)); //string
* Number
console.log(Number((a + b).toFixed(1))); //Number를 통해서 숫자로 바꿔줌
console.log(typeof Number((a + b).toFixed(1))); //number
* undefined
console.log(pi+undefined); // NaN : 숫자가 아닌 숫자, 타입은 숫자인데 숫자로 표기 불가
console.log(typeof (pi + undefined)); //number
* let, null, undefined
let age = null; //let: 값 재할당 가능
//null :비어있거나 알수없거나 존재하지 않음 -> 명시적으로 의미
//undefined : 암시적(할당 안해도 이미 그 값 존재), 따로 작성 안하고 let age; 라고 해도 undefined로 출력
setTimeout(function () {
age = 86;
console.log(age);
}, 1000); //1초 뒤 실행
* Array
const fruits = new Array("apple", "cherry"); // new 라는 키워드와 호출하는 함수 -> 생성자 함수, 자바스크립트 클래스
const fruits = ["APP","CHER"]; //배열 리터럴 방식-> 기호 통해 생성
console.log(fruits[0]);//인덱싱, 대괄호 표기법
console.log(fruits[fruits.length - 1]); //마지막 인덱싱
* Object
1. const user = new Object(); //객체 데이터, 생성자 함수 방식
user.name = "k";
//key : value 형태 (속성 : 값)
2. function User() {
this.name = "kk";
this.age = 9;
}
const user2 = new User();
console.log(user2);
3. const user3 = { name: "kk", age: 89 }; //리터럴 방식
console.log(user3);
+.
console.log(user3.name); //전표기법
console.log(user3["name"]); //대괄호표기법
const userA = { name: "kk", age: 89 };
const userB = { name: "ksk", age: 8, parent: userA };
console.log(userB.parent.name);
console.log(userB["parent"]["name"]);
const users=[userA,userB]
* 함수 괄호 유무 차이
function getNumber() {
return 1;
}
console.log(getNumber); //함수의 코드 구조 출력
console.log(getNumber()); //함수 호출돼서 1 출력
* 익명함수
const getNumber=function() {
return 2;
} //함수 이름이 없으므로 익명함수
const a = function () {
console.log("a");
};
const b = function (c) {
console.log(c);
};
b(a); //a함수 그대로 출력
* 동등 연산자, 일치 연산자
const a = 1; //number
const b = "1"; //string
console.log(a == b); //true, == : 동등 연산자 -> 형 변환으로 데이터형 바꿔가며 비교하므로 같은 경우 존재
console.log(a === b); //false, === : 일치 연산자 -> 완벽하게 같아야함, 추천
const a = 1;
const b = true;
console.log(a == b); //true
* 참과 거짓
거짓:false(bool), 0(숫자), -0(-숫자), null, undefined, NaN, ""(빈 문자 데이터), 0n(Big int)
참: 위 7가지를 제외한 모든 것
* 데이터 타입 확인
1.typeof -> null, object, array 구분 불가
console.log(typeof []); //object
console.log(typeof null); //object
console.log(typeof {}); //object
console.log(typeof function () {}); //function
2.constructor -> object, array 구분 가능 , null은 constructor 사용 불가
console.log([].constructor === Array); //배열, true
console.log({}.constructor === Object); //객체, true
3.Object.prototype.toString.call(data)
console.log(Object.prototype.toString.call(null).slice(8, -1));
function checkType(data) {
return Object.prototype.toString.call(data).slice(8, -1);
}
console.log(checkType(null));
console.log(checkType(false));