JavaScript

[JavaScript] 기본 연산자

FRDYtheme 2022. 12. 1. 22:19
 

산술연산자

+ (더하기) : 변수의 자료형에 따라 값을 더하거나 문자열을 출력.

    var num1 = 10, num2 = 20; console.log(num1 + num2);
    // num1과 num2의 값이 더해져 30 출력

    console.log(`num1 + num2 = ` + (num1 + num2));
    // num1 + num2 = 30 // `백틱`안의 문자열 `num1 + num2`와 ()안의 숫자 num1+num2의 값 -> 30을 출력

    console.log(`오늘은 ` + `즐거운 ` + `금요일`);
    // '오늘은 즐거운 금요일' 출력

    console.log(`11` + `22`);
    // 1122 //숫자형 문자열을 문자열로 연산한다.

    console.log(11 + `22`);
    // 1122 //숫자 + 숫자형 문자열도 문자열로 연산한다.

- (빼기) : 변수의 값을 뺀다.

    console.log(10 - 5); // = 5
    
    console.log(`오늘은` - `즐거운`);
    // 문자열의 ' - ' 는 NaN (Not a Number)로 출력

    console.log(`11` - `22`); // = -11
    
    console.log(11 - `22`);
    // = -11 숫자형 문자열은 자동으로 숫자로 변환하여 연산.

* (곱하기) : 변수의 값을 곱한다.

console.log(10 * 5); // = 50

console.log(`오늘은` * `즐거운` * `금요일`); // NaN

console.log(`10` * `15`); // = 150

console.log(100 * `10`);
// = 1000 숫자형 문자열을 자동으로 숫자로 변환하여 연산.

/ (나누기) : 변수의 값을 나눈다.

console.log(100 / 10); // = 10

console.log(`문자열은` / `나누기가` / `안된다`); // NaN

console.log(`500` / `10`); // = 50

console.log(`100` / 1);
// = 100 숫자형 문자열 자동 변환 연산.

% (나머지 값) : 값을 나누고 그 나머지 값을 출력.

console.log(7 % 2); // = 1 // 7을 2로 나누고 남은 값 1 출력.

console.log(`친구들에게` % `사과를` % `2개씩` % `나눠주고` % `남은것만` % `가지기로했다`);
// NaN

console.log(`13` % `5`); // = 3
//숫자형 문자열 자동 변환 연산.

** (거듭제곱) : 값을 거듭제곱한다.

console.log(2 ** 4); // = 16 // 2의 4승, 2 x 2 x 2 x 2 = 16

console.log(`당연히` ** `안되겠지`); // NaN

console.log(`3` ** 3); // = 27

복합연산

​산술연산자의 복합 연산에는 순서가 있다.

console.log(100 + 5 - 10); // = 95 

console.log(10 * 10 / 25); // = 4 [왼쪽에서 오른쪽 순으로 연산] 

console.log(95 + 25 / 5); // = 100 [*, /, % 는 +, -보다 먼저 연산] 

console.log((50 + 10) / 6); // = 10 ['()' 연산 후 나머지 연산]

숫자형 문자열을 숫자로 자동 변환하는 연산자들은 위의 규칙을 따르고

console.log((`15` - 5) * `3`); // = 30

숫자형 문자열을 문자열로 연산하는 더하기의 경우에는 아래와 같다.

console.log((15 + 5) + `50`); // = 2050
// (괄호)안의 숫자 연산 후 20의 숫자가 연산되지만 숫자형 문자열 `50`을 만나 문자열로 연산된다.

console.log(2 * (10 + '5')); // = 210

// (괄호)안의 연산으로 '105' 숫자형 문자열이 연산되지만
// '*'는 숫자형 문자열을 숫자로 자동 변환하므로 210 출력

 

비교연산자

왼쪽을 기준으로 비교하며 값은 참인 true(1), 거짓인 false(0)로 연산된다.

< (작다), >(크다)

console.log(100 < 105); // = true

console.log(1 > 2); // = false

console.log(1 > 2 < 3); 
// = true , 1 > 2의 값인 false가 0과 같기 때문에 0 < 3은 true가 된다.

<=(작거나 같다), >=(크거나 같다)

console.log(100 >= 90); // = true

console.log(100 >= 100); // = true

console.log(100 >= 110); // = false

console.log(10 <= 15); // = true

console.log(10 <= 10); // = true

console.log(15 <= 12); // = false

==(같다), ===(완전히 같다)

console.log(true == 1); // = true

console.log(true === 1); // = false

/* true는 1의 값을 가지기 때문에 위의 ==(같다)는 true지만
아래의 ===(완전히 같다)의 경우에는 자료형의 타입까지 같아야
true가 나오기 때문에 boolean 자료형인 true와 숫자인 1은 false가 나온다. */

!=(같지 않다), !==(완전히 같지 않다)

console.log(false != 0); // = false

console.log(false !== 0); // = true

비교연산자의 숫자형 문자열 연산

console.log(10 < `5`); // = false

console.log(`10` > 5); // = true
//숫자형 문자열과 숫자의 비교연산은 숫자형 문자열을 숫자로 자동 변환 연산.

console.log('abc' < 'def'); // true

console.log('ghi' > 'jkl'); // false

//문자열의 비교 연산시 알파벳의 순서에 따른 숫자로 비교되며, 제일 앞글자부터 차례대로 연산된다.

console.log(`abd` < `abz`); // true

console.log(`abd` > `abz`); // false

//문자열 첫 글자 자리수가 같으면 두 번째 글자로 두 번째 자리수도 같으면 세 번째 글자 자리수로 연산한다.

console.log(`100` > `50`); // = false
/* 100의 첫 번째 글자 '1'과 50의 첫번째 글자 '5'의 비교 연산

console.log(`100` < `50`); // = true
//숫자형 문자열도 제일 앞자리 숫자부터 비교하며 자리수가 같으면 다음 글자 자리수로 비교 연산

console.log(`20` > `10000`); // = true

console.log(`155557` > `155558`); // = false