Developer/JavaScript 튜토리얼 번역공부

2.7 형 변환

jaddong 2021. 6. 22. 21:51
320x100
더보기

primitives : 원시형

explicitly : 명쾌하게

exclusively : 독점으로

intuitively : 직관으로

 

대부분의 경우, 연산자와 함수들은 자동적으로 주어진 값을 적절한 형태로 변환한다.

예를 들면, alert은  값을 보여주기 위해 어떤 값을 문자열 형태 자동 변환한다. 수학적 연산자는 값을 숫자형으로 변환한다.

우리가 값을 기대한 형태로 명확하게 변환할 필요가 있을 때도 형변환 하는 경우이다.

아직 객체에 대해서 얘기하고 있진 않다.

이 챕터에서 우리는 객체는 다루지 않을 것이다. 지금부터 우리는 원시형에 대해서만 다룰 것이다.

객체를 원시형태로 변화하는 건, 객체에 대한 것을 배우고 이 후에 볼 것이다.

 

문자형으로 변환

문자형으로 형 변환은 문자형태의 값이 필요할 때 일어난다.

예를 들면, alert(value) 는 그것을 보여주기 위해 형변환을 한다.

값을 문자형으로 변환하기 위해 String(value) 함수를 사용할 수 있다.

let value = true; 
alert(typeof value); // boolean 
value = String(value); // 현재 value는 문자열 "true" 
alert(typeof value); // string

 

문자형으로 형변환은 대게 명시적이다.  false 는 "false"로, null은 "null"로 변환된다.

 

숫자형으로 변환

숫자형으로 형변환은 수학적인 함수나 표현에서 자동적으로 일어난다.

예를 들면 숫자가 아닌 것에 나누기를 적용할 때 이다.

alert( "6" / "2" ); // 3, 문자들이 숫자로 변환된다.

값을 숫자로 명확하게 변환하기 위해 Number(value)가 사용된다.

let str = "123"; 
alert(typeof str); // string 
let num = Number(str); // 숫자형 123 으로 변환됨
alert(typeof num); // number

 

명확한 형변환은 주로 숫자로 입력되었지만 문자 기반의 폼으로 부터 값을 읽을 때 필요하다. 

만약에 문자열이 유효하지 않은 숫자이면, 변환된 결과는 NaN이 된다.

let age = Number("an arbitrary string instead of a number"); 
alert(age); // NaN, 유효하지않은 숫자로 conversion failed

숫자형으로 형변환의 규칙은 아래와 같다.

undefined NaN
null 0
true and false 1 and 0
string Whitespaces from the start and end are removed. If the remaining string is empty, the result is 0. Otherwise, the number is “read” from the string. An error gives NaN.
처음과 끝에 공백은 제거된다. 만약 남아있는 문자열이 비어있다면 결과는 0이고 그렇지 않으면 그 문자열에서 숫자를 읽는다. 에러가 나면 NaN이 된다.

 

alert( Number(" 123 ") ); // 123 
alert( Number("123z") ); // NaN (숫자를 읽으면서 z에서 에러남)
alert( Number(true) ); // 1 
alert( Number(false) ); // 0

null 과 undefined는 여기서 다르게 동작한다. null은 0가 되고, undefined는 NaN이 된다.

대부분 수학적 연산자는 형변환은 수행한다. 우리는 다음 챕터에서 그것을 볼 것이다.

 

불린형으로 변환

 불린형으로 변환은 간단하다.

논리연산을 할 때 일어난다. Boolean(value)를 호출하면 명시적으로 형 변환된다.

 

변환 규칙은 아래와같다.

  • "0", 빈 문자열, null, undefined, NaN같이 직관적으로 비어있는 값은 들은 false가 된다.
  • 다른 값들은 true가 된다.
alert( Boolean(1) ); // true 
alert( Boolean(0) ); // false 
alert( Boolean("hello") ); // true 
alert( Boolean("") ); // false

몇몇 언어(PHP 등)에서는 "0"을 false로 다루기도 한다. 그러나 자바스크립트에서는 빈 문자열만 항상 true이다.

alert( Boolean("0") ); // true 
alert( Boolean(" ") ); // 공백이라 true (비어있는 문자열이 아님)
반응형

'Developer > JavaScript 튜토리얼 번역공부' 카테고리의 다른 글

2.6 상호작용 : alert, prompt, confirm  (0) 2021.06.20
2.5 자료형  (0) 2021.05.22
2.4 변수와 상수  (0) 2020.08.06
2.3 엄격 모드  (0) 2020.08.04
2.2 코드 구조  (0) 2020.08.04