[ES6] 08.
더하기연산중에, 피연산자중에 하나라도 피연산자가 문자열+ 숫자면 ,
문자열 + 숫자는 더해진다.
기능으로 보면, 문자열 + 숫자로 해서 숫자가 "문자"로 변해서 계산된다.
let s = "90";
alert (`숫자는 ${s+ 3}은? `); 값은 903이 된다.
문자앞에 + 를 쓰면 ,-> 숫자로 변환되어,
alert (`숫자는 ${+s+ 3}은? `); 값은 93이 된다.
문자앞에 Number 를 쓰면 ,-> 숫자로 변환되어,
alert (`숫자는 ${Number(s)+ 3}은? `); 값은 93이 된다.
js 피연산자중에 하나라도 피연산자가 문자열이면 +된 숫자값도 문자열로 바뀌는것에 에 대한 상세한설명과 이해할수있는 예시 코드를보여줘,
JS에서는 '+' 연산자가 문자열 합치기 연산뿐만 아니라, 숫자의 더하기 연산도 수행할 수 있습니다. 하지만 더하기 연산에서 피연산자 중 하나라도 문자열이면, 다른 숫자 타입의 값도 모두 문자열로 바꾸어 합쳐집니다. 이를 '암시적 타입 변환(implicit type conversion)'이라고 합니다.
예시 코드를 통해 자세히 살펴보겠습니다.
```
const a = 1 + 2; // 숫자 1과 2를 더한 값인 숫자 3을 반환
const b = "1" + 2; // 문자열 "1"과 숫자 2가 합쳐져서 문자열 "12"가 반환
const c = 1 + "2"; // 숫자 1과 문자열 "2"가 합쳐져서 문자열 "12"가 반환
const d = "1" + "2"; // 문자열 "1"과 문자열 "2"가 합쳐져서 문자열 "12"가 반환
console.log(a, b, c, d); // 출력: 3, "12", "12", "12"
```
위 코드에서, 변수 a에는 숫자 1과 2를 더한 값인 숫자 3이 할당됩니다. 그러나 변수 b와 변수 c, 변수 d에는 모두 문자열 "12"가 할당됩니다. 이는 우선순위가 높은 '+' 연산자가 문자열에서도 합치기를 수행하기 때문입니다. 따라서, 문자열과 숫자의 '+' 연산도 암시적 타입 변환에 따라 문자열로 합쳐지게 됩니다.
이러한 문제를 피하기 위해서는 '+' 연산자를 사용할 때 타입을 직접 변환하여 명시적으로 처리하는 방식으로 개선할 수 있습니다.
```
const a = 1 + parseInt("2"); // parseInt() 함수를 사용하여 문자열 "2"를 숫자 2로 변환
const b = "1" + String(2); // String() 함수를 사용하여 숫자 2를 문자열 "2"로 변환
console.log(a, b); // 출력: 3, "12"
```
위 코드에서, **parseInt()** 함수는 문자열 인수를 숫자로 변환해주는 함수입니다. **String()** 함수는 숫자를 문자열로 변환해주는 함수입니다. 이런 타입 변환 함수를 이용해서 코드를 작성하면, 문자열 합치기 연산으로 인한 암시적 타입 변환을 방지할 수 있습니다.
[ES6] 08.
빼기 연산중에, 피연산자중에 하나라도 피연산자가 문자열이면 -,* 된 숫자값과 문자열이 연산되어
문자열 - 숫자는 - , *(빼기,곱하기)는 전부다 '숫자형'이 된다.
문자열 - 숫자는 - , *(빼기,곱하기)는 전부다 '숫자형'이 된다.
JS에서 빼기 연산자(-)는 숫자 타입의 값끼리만 계산하는 연산자입니다. 하지만 빼기 연산자를 사용할 때, 피연산자 중 하나 이상이 문자열이라면 JS에서는 그 값들을 숫자로 변환하여 계산합니다. 이를 암시적 타입 변환(implicit type conversion)이라고 합니다.
만약 빼기 연산할 때 피연산자 중 하나 이상의 값이 문자열이고, 값들에 숫자 뿐만 아니라 다른 문자가 포함되어 있다면 NaN(Not a Number)으로 처리됩니다.
예시 코드를 통해 자세히 살펴보겠습니다.
```
const a = 10 - 5; // 숫자 10과 숫자 5를 빼서 숫자 5를 반환
const b = "10" - 5; // 문자열 "10"을 숫자 10으로 변환하여, 숫자 5를 뺀 숫자 5를 반환
const c = 10 - "5"; // 문자열 "5"를 숫자 5로 변환하여, 숫자 10에서 뺀 숫자 5를 반환
const d = "10" - "5"; // 문자열 "10"과 "5"가 모두 숫자로 변환되어, 숫자 10에서 숫자 5를 뺀 숫자 5를 반환
const e = "a" - "b"; // 문자열 "a"와 "b"가 모두 숫자로 변환되지 않아 NaN을 반환
const f = 10 - "abc"; // 문자열 "abc"가 숫자로 변환될 수 없어 NaN을 반환
console.log(a, b, c, d, e, f); // 출력: 5, 5, 5, 5, NaN, NaN
```
위 코드에서, 변수 a부터 변수 d까지는 숫자와 문자열을 빼서 숫자 결과값이 리턴됩니다. 그러나 변수 e와 f의 경우, 값에 포함된 문자를 숫자로 변환할 수 없으므로 NaN이 반환됩니다.
따라서, 빼기 연산 시에도 숫자와 문자열 사이에서 암시적 타입 변환에 의해 예기치 않은 값이 계산될 수 있는 경우가 있습니다. 이를 방지하기 위해서는 빼기 연산 시에는 타입을 직접 변환하여 처리하는 방식으로 개선할 수 있습니다.
#js #연산자 #논리연산자 #비교연산자 #비교연산자 #&&연산자 #삼항연산자 #산술연산자 #동등연산자 #일치연산자 #증가연산자 #감소연산자 #산술연산자 #비트연산자 #자바스크립트연산자 #자바스크립트비교연산자 #vanillajs #피연산자 #복합대입연산자
#연산자 #비교연산자 #비트연산자 #산술연산자 #산술연산자 #비교연산자 #참조연산자 #엑셀연산자 #논리연산자 #증감연산자 #연산자기초 #주소연산자 #텍스트연산자 #c언어연산자 #c언어증감연산자 #c언어전위연산자 #c언어후위연산자 #c++연산자오버로딩의필요성
#es6 #javascriptes6 #nioes6 #jses6 #es6classes #es6tutorial #蔚来es6 #es6javascript #nioes6reviews #learnes6 #es6course #es6modules #es6js #hoces6
'컴퓨터공부 > Javascript' 카테고리의 다른 글
[ES6] 10. if true,false 조건문 만들기 (0) | 2023.05.27 |
---|---|
[ES6] 09. if조건문 true,false 조건문 만들기 (0) | 2023.05.26 |
[ES6] 07. 문자열 거듭제곱, 숫자 거듭제곱 (0) | 2023.05.25 |
[ES6] 07. 문자열 백틱,${} (0) | 2023.05.25 |
댓글