전체 글

전체 글

    [JavaScript][clean-code] isNaN (is Not a Number)

    컴퓨터는 기본적으로 2진수를 가지고 있다. 사람이 생각하는 숫자는 10진수이다. 따라서 이러한 간극 때문에 숫자를 다루기 어렵다. 특히 소수점에서 간극이 많이 생긴다. 이러한 간극을 자바스크립트는 IEEE754 표준을 사용하여서 부동소수점을 표현을 표준을 이용해 해결하려고 한다. * isNaN (is Not a Number) (Bad) - 숫자가 아니다. - typeof를 이용하다가 isNaN을 통해서 숫자를 확인할 경우가 있다. isNaN : true // 숫자가 아니다. isNaN : false // 숫자가 맞다. (숫자가 아닌게 아니다) isNaN(123) // false isNaN은 느슨한 검사를 한다. 따라서 엄격한 검사를 해주어야한다. * Number.isNaN (Good) - 엄격한 검사를 ..

    [JavaScript][clean-code] undefined & null

    [JavaScript][clean-code] undefined & null

    * undefined & null - 둘다 값으로 쓰기에는 무언가 없다를 의미한다. * undefined 선언했지만 값은 정의되지 않고 할당이 되지 않은 상태 아무것도 지정하지 않을때 기본값 let a; console.log(a); // undefined typeof a; // 'undefined' undefined + 10 // NaN !undefined // true undefined == null // true undefined === null // false !undefined === !null // true * null !null // true !!null // false null === flase // false !null === true // true // null은 수학적으로는 0으로 취급..

    [JavaScript][clean-code] eqeq줄이기 & 형 변환 주의하기

    * eqeq란? - Equality(==) 동등연산자 * eqeq의 문제점은?? - 동등연산자를 사용하면 형 변환이 일어난다. (type casting) "1" == 1 // true 1 == true // true 따라서 엄격한 동등연산자를 사용해야한다. * eqeq문제점 해결방법 1. Strict equality(===) 엄격 동등연산자 "1" === 1 // false 1 === true // false 2. 형 변환을 수동으로 막아주기 Number(ticketNum.value) === 0 // true ticketNum.valueAsNumber === 0 // true 3. ESLint를 이용한다. * 형 변환시 주의 사항 - 자바스크립트가 형 변환을 할때는 암묵적인 변환을 해준다. - 사용자가 ..

    [JavaScript][clean-code] 타입 검사

    * 타입 검사에 대한 방법 typeof instanceof Object.prototype.toString.call('') * typeof - typeof연산자가 피연산자를 평가한뒤 문자열로 반환해준다. ex) typeof 'Hello' // 'string' * typeof의 문제점 primitive value는 대부분 typeof로 검사가 가능하나 reference value는 감별하기 어렵다. typeof null 'object'가 반환된다. 언어적인 오류이다. (수정할 수 없다고 판단되어 계속 사용되고 있음) typeof는 만능이 아니다. * instanceof (typeof와 유사) - 생성자의 prototype속성이 객체의 prototype chain어딘가에 존재하는지 판별한다. * instanc..

    [JavaScript][clean-code] 호이스팅 주의하기

    [참고] https://latte1114.tistory.com/357 * 호이스팅이란? - 런타임시(프로그램이 동작될때) 선언을 바로 최상단으로 끌어 올려주는것 - 런타임시(프로그램이 동작될때) 선언과 할당을 분리해준다. * 문제점은?? 코드를 작성할 때 예측하지 못한 실행 결과를 만들어 낼 수 있다. 굉장히 힘든 개발을 해야 할 수 있다. * 이러한 상황을 피하기 위해서는?? var를 사용하지 않는다. let, const를 사용해주자. 함수도 조심할것 좋은방법: 함수표현식을 이용하자 * 함수표현식 const sum = function() { return 1 + 2; } console.log(sum()); // 3

    [JavaScript][clean-code] 임시변수를 제거하자

    * 임시변수란? - Scope안에서 전역변수처럼 활용되는 변수 * 임시변수를 쓰면 왜 위험한가? 함수안에있는 임시객체들이 함수가 커지면서 전역공간이나 다름없는 상황에서 나올수 있다. 그렇게되면 임시객체들이 매우 위험한 요소들이 될 수가 있다. 명령형으로 가득한 로직이 나온다. 임시변수에 값을 넣고 넣고 넣고 변경하다가 보면 값이 예상이 되지않는다. 어디서 어떻게 잘못되었는지 디버깅이 힘들다. 추가적인 코드를 작성하고 싶은 유혹에 빠지기 쉽다. 코드 유지보수가 어렵다. * 임시변수나 임시객체들은 어떻게 CRUD하는게 좋을까? (CRUD는 조작한다는 의미) 함수를 많이 나누는 방법 임시변수에 담지않고 바로 반환하기 단 하나의 역할만 할 수 있는 함수로 만들기 고차함수를 사용 ex) map(), filter(..