본문 바로가기

컴퓨터공부/Javascript

[ES6] 08. (더하기) 연산자와 (빼기,곱하기) 연산자가 다르다.

by Life & study 2023. 5. 25.
반응형

#js #연산자 #논리연산자 #비교연산자 #비교연산자 #&&연산자 #삼항연산자 #산술연산자 #동등연산자 #일치연산자 #증가연산자 #감소연산자 #산술연산자 #비트연산자 #자바스크립트연산자 #자바스크립트비교연산자 #vanillajs #피연산자 #복합대입연산자



#연산자 #비교연산자 #비트연산자 #산술연산자 #산술연산자 #비교연산자 #참조연산자 #엑셀연산자 #논리연산자 #증감연산자 #연산자기초 #주소연산자 #텍스트연산자 #c언어연산자 #c언어증감연산자 #c언어전위연산자 #c언어후위연산자 #c++연산자오버로딩의필요성



#es6 #javascriptes6 #nioes6 #jses6 #es6classes #es6tutorial #蔚来es6 #es6javascript #nioes6reviews #learnes6 #es6course #es6modules #es6js #hoces6

[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

댓글