NOTION 정리/Javascript 7

원시타입과 참조타입(feat. 얕은 복사와 깊은 복사)

자바스크립트에는 원시타입과 참조타입이 있다 원시타입(Primitive type) Number, String, Boolean, Null, Undefined, Symbol 데이터 복사가 일어날 때 메모리 공간을 새로 확보하여 독립적인 값을 저장한다.(메모리 크기 고정) 값이 절대 변하지 않는 불변성을 지니고 있어서, 재할당 시 값이 변하는 게 아니라 변수가 새로운 메모리를 가리키게 된다. let a = 10; a = 50; 기존 메모리에 있던 10이라는 값이 50으로 변경되는 것이 아니라 새로운 50이란 값을 메모리에 생성하고 a는 새로운 메모리(50)을 가리키게 된다. let a = 1; let b = a; a = 2; console.log(a); //2 console.log(b); //1 console...

휴대폰 번호 입력 시 자동 하이픈

let inputElement = document.getElementById('input'); //정규표현식으로 숫자만 입력받게 체크 let phoneNumber = inputElement.value.replace(/[^0-9]/g, ''); let tmp = ''; if( phoneNumber.length < 4){ } else if(phoneNumber.length < 7){ tmp += phoneNumber.substr(0, 3); tmp += '-'; tmp += phoneNumber.substr(3); phoneNumber = tmp; }else if(phoneNumber.length < 11){ tmp += phoneNumber.substr(0, 3); tmp += '-'; tmp += pho..

정수일 때 소수점 떼고 실수일 땐 소수점 둘째 자리까지 표시하기

const checkFloatNumber = (float) =>{ let result = 0; let temp = 0; if(float === parseInt(float)){ //정수일때 result = float; } else { //실수일때 temp = Math.floor(float * 100)/100; //둘째짜리 이후 소수점 버리기 result = temp.toFixed(2); //소수점 한자리일때 0을 붙여줌 } return result; }; toFixed 는 반올림을 해주기 때문에 반올림없이 절삭하려면 Math.floor 함수가 필요하다. Math.floor 함수는 주어진 숫자와 같거나 작은 정수 중 가장 큰 수를 반환한다. Math.floor(5.95) => 5 Math.floor(-5.0..

this

자바스크립트의 this는 함수를 호출하는 방식에 따라 동적으로 결정됨(누가 불렀냐에 따라 결정) *바인딩 : this가 호출 방식에 따라서 특정 '객체'에 연결되는 것 1. 일반 함수 내부에서는 this는 글로벌 객체와 바인딩 됨 function foo() { return this; } console.log(foo()) //window 2. 객체 메서드 내부에서는 호출한 객체와 바인딩 const animal = { name: “dog”, getName: function() { console.log(this); } } animal.getName(); //animal(dog) 객체 const animal2 = { name: “cat”, getName: animal.getName } animal2.getNam..

?? (null 병합 연산자)

?? 은 null 병합 연산자라고 함 피연산자 중 확정되어 있는 변수(null도 아니고 undefined도 아닌)를 찾을 수 있다 // 이 if문은 if(a ?? b) //이 문장과 같다 (a !== null && a !== undefined) ? a : b a가 null이 아니고 undefined 가 아니면 a, 아니면 b && , || 연산자와의 차이 && 는 첫번째 false 인 값을 반환 (false 가 없으면 마지막 값) || 는 첫번째 true 인 값을 반환 (true 가 없으면 마지막 값) ?? 는 첫번째 정의된 값을 반환 console.log(0 && 10); // 0 console.log(0 || 10); // 10 console.log(0 ?? 10); // 0 대다수의 연산자보다 우선..

IOS 사파리에서 Date가 NaN으로 나올 때

function convert( date ){ var element, dayElement, endTime, hours, mins, msLeft, time, day; var arr = date.split(/[- :]/); date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5]); } 사파리에서 Y-m-d H:i:s 포멧을 지원하지 않아서 발생(21년 7월에 확인) Y-m-d H:i:s 포멧으로 date 정보를 받을 경우 split 으로 분해해서 새로운 date로 생성하면 해결됨 https://stackoverflow.com/questions/26657353/date-on-ios-device-returns-nan Date on iOS device ..