형변환과 강제(Type Casting & Coercion)
Strings:
문자열의 경우:
// => this.reviewScore = 9; // bad const totalScore = this.reviewScore + ''; // good const totalScore = String(this.reviewScore);
Numbers: Use
Number
for type casting andparseInt
always with a radix for parsing strings.수치의 경우:
Number
로 형변환하는 경우는parseInt
를 이용하고, 항상 형변환을 위한 기수를 인수로 넘겨 주십시오.const inputValue = '4'; // bad const val = new Number(inputValue); // bad const val = +inputValue; // bad const val = inputValue >> 0; // bad const val = parseInt(inputValue); // good const val = Number(inputValue); // good const val = parseInt(inputValue, 10);
If for whatever reason you are doing something wild and
parseInt
is your bottleneck and need to use Bitshift for performance reasons, leave a comment explaining why and what you're doing.무언가의 이유로 인해
parseInt
가 bottleneck 이 되어, 성능적인 이유로 Bitshift를 사용할 필요가 있는 경우 하려고 했던 것에 대해, 왜(why) 와 무엇(what)의 설명을 코멘트로 해서 남겨 주십시오.// good /** * parseInt was the reason my code was slow. * Bitshifting the String to coerce it to a * Number made it a lot faster. * parseInt 가 원인으로 느렸음. * Bitshift를 통한 수치로의 문자열 강제 형변환으로 * 성능을 개선시킴. */ const val = inputValue >> 0;
Note: Be careful when using bitshift operations. Numbers are represented as 64-bit values, but Bitshift operations always return a 32-bit integer (source). Bitshift can lead to unexpected behavior for integer values larger than 32 bits. Discussion. Largest signed 32-bit Int is 2,147,483,647:
주의: bitshift를 사용하는 경우의 주의사항. 수치는 64비트 값으로 표현되어 있으나 bitshift 연산한 경우는 항상 32비트 integer 로 넘겨집니다.(소스). 32비트 이상의 int 를 bitshift 하는 경우 예상치 못한 현상을 야기할 수 있습니다.(토론) 부호가 포함된 32비트 정수의 최대치는 2,147,483,647 입니다.
2147483647 >> 0 //=> 2147483647 2147483648 >> 0 //=> -2147483648 2147483649 >> 0 //=> -2147483647
Booleans:
부울값의 경우:
const age = 0; // bad const hasAge = new Boolean(age); // good const hasAge = Boolean(age); // good const hasAge = !!age;
'개발 > Javascript' 카테고리의 다른 글
억세서(Accessors) (0) | 2018.03.11 |
---|---|
명명규칙(Naming Conventions) (0) | 2018.03.11 |
세미콜론(Semicolons) (0) | 2018.03.11 |
콤마(Commas) (0) | 2018.03.11 |
공백(Whitespace) (0) | 2018.03.11 |