본문 바로가기

JavaScript & TypeScript8

!! 연산자 !! 연산자 회사에서 레거시 코드를 분석하던 중에 !!라는 생소한 코드를 보게 되었다. (이 이상은 보안상 공개불가..ㅎㅎ) 처음 생각했을 때, 위 코드에서 existWebQuery 변수에는 dbInfo와 queryInfo가 둘 다 true일 경우, true 값이 저장되는 코드다라고 생각했다. -> 어느정도 맞지만 엄밀히 말하면 아닙니다. 생각을 해보면 '논리 부정 연산자 '!'를 두 번 썼다면 부정의 부정이니 원래 dbInfo, queryInfo 값이 아닌가?' 라는 의문이 들었다. 그래도 선임자가 저 코드를 괜히 쓰지는 않았을테니 그 이유가 궁금하여 !! 연산자에 대해서 찾아보았다. 자바스크립트에서 '!!'는 boolean 값을 반환하도록 하는 간단한 방법 중에 하나이다. 또한 boolean인 값으로.. 2023. 5. 25.
Optional Chaining operator(선택적 체이닝 연산자) ?. 문법 '?.'은 Optional chaining operator(선택적 체이닝 연산자)라고 부르며, ES2020부터 추가된 문법이다. 이 연산자는 객체의 중첩된 속성에 접근할 때, 해당 속성이 존재하지 않는 경우, 'TypeError'를 발생시키지 않고, 'undefined'를 반환한다. 바로 예시 코드를 보자 const person = { name: 'John', age: 30, address: { street: '123 Main St.', city: 'Anytown', state: 'CA', } }; 이 객체의 address 속성에 접근하려면 다음과 같이 할 수 있다. const city = person.address.city; // 'Anytown' 하지만 만약 person 객체에 addres.. 2023. 5. 25.
동기/비동기, 콜백함수 동기/비동기 처리란? 동기처리 동기 처리의 가장 기본적인 뜻은 한번에 코드를 한 줄씩 차례대로 실행한다는 뜻이다. 자바스크립트를 실행하는 웹 브라우저에는 stack이라는 코드 실행 공간이 있는데, 거기서 코드를 한 줄씩, 차례대로 실행한다. 예제 코드를 한 번 보자. //출력 결과 //1 //2 //3 자바스크립트는 한 번에 코드 한 줄씩 차례차례 실행하기 때문에 출력 결과는 당연하게도 1,2,3이 차례로 출력된다. 이러한 처리 방식을 동기라고 한다. 비동기처리 만약 특정 코드를 1초 후에 실행하고 싶어서 다음과 같은 코드를 작성했다고 가정해보자. console.log(1); setTimeout(function(){}, 1000); console.log(2); // 출력 결과 // 1 // 2 (1초 안.. 2023. 5. 25.
javascript 변수 및 호이스팅(Hoisting) : var, let, const, Hoisting javascript 변수의 선언, 할당 자바스크립트의 변수 선언 방식은 총 세 가지 경우가 있다. var 이름; let 나이; const 성별; var, let, const는 키워드마다 변수의 선언, 할당, 범위에서 차이가 있다. 결론부터 말하자면 var, let, const는 각각 아래와 같은 특징을 가진다. var : 재선언 O 재할당 O let : 재선언 X 재할당 O const : 재선언 X 재할당 X var var은 중복해서 선언이 가능하고, 이 경우, 마지막에 할당된 값이 변수에 저장된다. 또한 값의 재할당도 가능하다. 따라서 기존에 선언해 둔 변수의 존재를 잊어버리고, 값을 재할당 하게 되는 등의 실수가 발생할 수 있다. var 이름 = '홍시'; // 초기 선언 var 이름 = '감홍시';.. 2023. 5. 19.
728x90