Skip to content

Commit

Permalink
Merge pull request #1 from qwer0114/main
Browse files Browse the repository at this point in the history
aa
  • Loading branch information
si14444 authored Jun 26, 2024
2 parents f0c9ecb + 35a603d commit b95e6e0
Show file tree
Hide file tree
Showing 39 changed files with 5,119 additions and 8 deletions.
Binary file modified .DS_Store
Binary file not shown.
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@
| 1주차 | 2024-05-16 | 4~6 |
| 2주차 | 2024-05-23 | 7~9 |
| 3주차 | 2024-05-30 | 10~12 |
| 4주차 | 2024-06-06 | 13~15 |
| 5주차 | 2024-06-13 | 18~19 |
| 6주차 | 2024-06-20 | 21~23 |
| 7주차 | 2024-06-27 | 24~26 |
| 8주차 | 2024-07-04 | 27,31,34 |
| 9주차 | 2024-07-11 | 35~37 |
| 10주차 | 2024-07-18 | 38~40 |
| 11주차 | 2024-07-25 | 41~43 |
| 4주차 | 2024-06-20 | 13~15 |
| 5주차 | 2024-06-27 | 18~19 |
| 6주차 | 2024-07-04 | 21~23 |
| 7주차 | 2024-07-11 | 24~26 |
| 8주차 | 미정 | 미정 | 27,31,34 |
| 9주차 | 미정 | 미정 | 35~37 |
| 10주차 | 미정 | 미정 | 38~40 |
| 11주차 | 미정 | 미정 | 41~43 |
| 12주차 | 미정 | 미정 |
Binary file added 박상민/.DS_Store
Binary file not shown.
194 changes: 194 additions & 0 deletions 박상민/week2/연산자.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
## 07장_연산자

### 연산자란
하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산을 수행해 하나의 값을 만듦

>피연산자가 “값”이라는 명사의 역할을 한다면 연산자는 “값을 만든다”라는 동사의 역할
``` javascript
//산술 연산자
5*4 = 20

//문자열 연결 연산자
'My name is ' + 'Lee' // 'My Name is Lee'

// 할당 연산자
color = 'red' // red


// 비교 연산자
3 > 5

// 논리 연산자
true && false

// 타입 연산자
typeof 'Hi'

```



### 산술 연산자
#### 단항 산술 연산자(증/감)

단항 산술 연산자의 증가(++)/감소(--) 연산자는 피연산자의 값을 변경하는 부수 효과가 있다.

부수효과를 다시 설명하자면 증가/감소 연산을 하면 피연산자의 값이 바뀐다는 것으로 해석이 가능하다.

```javascript
var x = 5, result;

// 선할당 후증가 (Postfix increment operator)
result = x++;
console.log(result, x); // 5 6

// 선증가 후할당 (Prefix increment operator)
result = ++x;
console.log(result, x); // 7 7

// 선할당 후감소 (Postfix decrement operator)
result = x--;
console.log(result, x); // 7 6

// 선감소 후할당 (Prefix decrement operator)
result = --x;
console.log(result, x); // 5 5

```

숫자 타입이 아닌 피연산자에 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다.

```javascript
// 부호를 반전한다.
-(-10); // -> 10

// 문자열을 숫자로 타입 변환한다.
-'10'; // -> -10

// 불리언 값을 숫자로 타입 변환한다.
-true; // -> -1

// 문자열은 숫자로 타입 변환할 수 없으므로 NaN을 반환한다.
-'Hello'; // -> NaN
```
#### 문자열 연결 연산자

+연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.

```javascript
// 문자열 연결 연산자
'1' + 2; // -> '12'
1 + '2'; // -> '12'

// true는 1로 타입 변환된다.
1 + true; // -> 2

// false는 0으로 타입 변환된다.
1 + false; // -> 1

// null은 0으로 타입 변환된다.
1 + null; // -> 1

// undefined는 숫자로 타입 변환되지 않는다.
+undefined; // -> NaN
1 + undefined; // -> NaN
```


### 동등비교와 일치비교
동등비교는 타입 검사부터 진행 다르면 암묵적 타입변환 후 일치비교와 동일한 검사 수행 -> 결과 예측 어려움

```javascript
// 동등 비교. 결과를 예측하기 어렵다.
'0' == ''; // -> false
0 == ''; // -> true
0 == '0'; // -> true
false == 'false'; // -> false
false == '0'; // -> true
false == null; // -> false
false == undefined; // -> false


// 즉, 값과 타입이 모두 같은 경우만 true를 반환한다.
5 === '5'; // -> false

// NaN은 자신과 일치하지 않는 유일한 값이다.
NaN === NaN; // -> false

// Number.isNaN 함수는 지정한 값이 NaN인지 확인하고 그 결과를 불리언 값으로 반환한다.
Number.isNaN(NaN); // -> true
```

### 삼항 조건 연산자

```javascript
var x = 2;

// 2 % 2는 0이고 0은 false로 암묵적 타입 변환된다.
var result = x % 2 ? '홀수' : '짝수';

console.log(result); // 짝수
```
삼항 조건 연산자에서 주의할 사항은 물음표 앞의 첫번째 피연산자는 값으로 평가될 수 있는 표현식이어야 한다.

다음과 같은 경우는 성립안됨
```javascript
var x = 10;

// if...else 문은 표현식이 아닌 문이다. 따라서 값처럼 사용할 수 없다.
var result = if (x % 2) { result = '홀수'; } else { result = '짝수'; };
// SyntaxError: Unexpected token if
```

#### 논리 연산자
```javascript
// 논리합(||) 연산자
true || true; // -> true
true || false; // -> true
false || true; // -> true
false || false; // -> false

// 논리곱(&&) 연산자
true && true; // -> true
true && false; // -> false
false && true; // -> false
false && false; // -> false

// 논리 부정(!) 연산자
!true; // -> false
!false; // -> true

// 암묵적 타입 변환
!0; // -> true
!'Hello'; // -> false
```

#### typeof 연산자

피연산자의 데이터 타입을 검사해 문자열로 반환


```javascript
typeof '' // -> "string"
typeof 1 // -> "number"
typeof NaN // -> "number"
typeof true // -> "boolean"
typeof undefined // -> "undefined"
typeof Symbol() // -> "symbol"
typeof null // -> "object"
typeof [] // -> "object"
typeof {} // -> "object"
typeof new Date() // -> "object"
typeof /test/gi // -> "object"
typeof function () {} // -> "function"
```

단, null 타입인지 확인할 경우 typeof연산자를 사용하지 않고 일치 연산자를 사용해야 한다.

```javascript
var foo = null;

typeof foo === null; // -> false
foo === null; // -> true
```
Loading

0 comments on commit b95e6e0

Please sign in to comment.