본문 바로가기

자바스크립트

[자바스크립트] - 산술연산자, 문자결합연산자+, 대입=(복합대입)연산자 A += B

< 연산자 >

초등학교때 배웠던 +, -, *(곱하기), /(나누기), %(나머지값)을 이용해서 연산을 할 수 있다.
자바스크립트에서는 여러 연산자가 있는데 산술, 문자결합, 대입(복합대입), 증감, 비교, 논리, 삼항 조건 연산자가 있다.

 

+ - / % => 연산자

1+2 -> 1,2 가 피연산자

 1. 산술연산자  

사칙연산과 같다. +, -, *(곱하기), /(나누기), %(나머지값)가 산술연산자이다.
산술연산을 하기 위해서는 반드시 연산 대상 데이터(=피연산자 / 연산을 당하는 애들. 1+1에서 더하기위해 필요한 값)이 반드시 두 개 있어야한다.
변수를 선언하고 변수끼리 더한다.

 

 var num = 1;
      var num2 = 10;

      var sum1 = num1 + num2; //보통 이런식으로 쓴다. 분리해서 재사용할 수 있기에 이 방법을 많이 쓴다. 변수를 더해서 남길 또 다른 변수그릇도 만들어줘야한다.

      var sum2 = 1 + 10; //변수 안에서 연산이 끝남. 분리해서 쓸 수 없다. 재사용할 생각이 없을 때 이렇게 씀.

 

콤마로 구분해서 문자내용도 같이 출력할 수 있다. ( "문자", 변수명 )

%는 나눠서 남은 값을 보여준다.  

 


  2. 문자결합연산자  +


문자 결합 연산자는 피연산자(연산 대상 데이터)가 문자형 데이터이다. (문자들을 더해준다)

여러 개의 문자를 하나의 문자형 데이터로 결합할 때 사용함.

 

기호는 +(더하기)를 사용한다.
문자결합연산자는 피연산자로 문자형 데이터가 한 개라도 포함되면 다른 피연산자의 데이터는 자동으로 문자형 데이터로 변환되고 문자 결합이 이루어지면서 하나의 문자형 데이터로 반환된다.

( 한개라도 문자형 데이터가 있으면 전부 다 문자형 데이터로 결합된다.)  


* 연산기호는 앞에 있는 데이터 순서대로 더해진다. 
즉 피연산자(더해지는 요소)가 숫자이고 숫자가 여러 개 있으면 숫자끼리 먼저 더해진 후, 문자를 만나면 그 다음부터 문자결합이 이루어진다. 

 

typeof 로 확인해보면, 

안에 숫자형 데이터가 들어있어도 더하게되면 문자형 데이터로 인식하게 된다. 

 

- > 앞에 문자가 와있기 때문에, 문자형 데이터로 되어 뒤에 오는 것들은 문자로 합쳐지게 된다. (숫자연산이 되지 않는다) 

- > 더하기는 순서대로 계산되니깐 숫자 먼저 더해져서 30 하이가 된다. 그 뒤 문자가 등장해서 30하이가 되는 것이다.  

그래서 문자가 되어있는데 그 뒤에 숫자가 나와도 더이상 더해지지않고 문자로 되어 더해진다. 

 

* 즉  더하기의 순서에서

숫자가 먼저 오면 숫자가 더해진다음에 문자를 만나면 앞에 숫자들은 더해지는데,(숫자로 더해진다음 문자가 되는 것)

문자가 먼저 온다음 숫자를 만나면 숫자는 연산되지않고 문자로써 더해진다. 

 


   3. 대입연산자 (=)  

연산된 데이터를 변수에 저장할 때 사용함. '오른쪽에 있는 값을 변수에 넣는다'라는 의미이다. 
         
[기본형]
 A = B ( B를  A에 담는다 )

 



 4. 복합대입연산자  

산술연산자와 대입연산자가 복합적으로 적용된 것을 말한다. ( 앞에 있는 a에 값이 저장)

[ 기본형 ]
- 1. A += B  -> A = A+B (A는 A와 B를 더한 값이다.)
- 2. A -= B  -> A = A-B (A는 A에서 B를 뺀 값이다.)
- 3. A *= B  -> A = A*B (A는 A와 B를 곱한 값이다.)
- 4. A /= B  -> A = A/B (A는 A에서 B를 나눈 값이다.)
- 5. A %= B  -> A = A%B (A는 A에서 B를 나누고 남은 나머지값이다.)

 

     var num1 = 10;
      var num2 = 3; //앞에 나오는 변수가 최종 담는 변수가 된다.

      num1 += num2; //10+3 -> num1 = 13;
      num1 -= num2; // 13-3 -> num1 = 10;
      num1 *= num2; // 10*3 -> num1 = 30;
      num1 %= num2; // 30%3 -> num1 = 0; 계속해서 num1을 불러오니깐 변수는 하나의 값만 담을 수 있으니깐
                                 num1은 계속해서 값이 변하게 된다.