📙 (JAVASCRIPT)

자바스크립트) 연산자

놀러와요 버그의 숲 2021. 12. 2. 21:22
728x90
반응형

쓰던 내용이 다 날라갔다. 임시 저장 해놨는데도 날라갔다.

 

그래서 오늘은 가장 자바스크립트 딥다이브 07장 연산자를 읽으면서 가장 실무에 필요할 거 같은 것만

 

포스팅 해보려고 한다.

 

 

연산자는 하나 이상의 표현식을 대상으로 산술,할당, 비교, 논리, 타입,지수,연산 등을 수행해 하나의 값을 만든다.

 

연산자는 결국 하나의 값을 만든다는 표현이 인상적이었다. 연산자는 결국 어떤 표현을 통해 하나의 값을 만드는 역할까지 수행하는 애였구나!

 

종류:

1) 5*4 / ++  -> 산술연산자

2) "My name is" + "Lee" => 문자열 연결 연산자

3) color = "red" -> 할당 연산자

4) 3>5 -> 비교 연산자 

5) && || -> 논리 연산자

6) typeof "hi" -> 타입 연산자

 

제일 조금 낯설었던건 할당 연산자라고 부르는거랑, +를 문자열 연결 연산자라고 부르는거랑, typeof도 연산자라는 사실이다!

 

이때 연산의 대상을 '피연산자'라고 한다.

 

그니까 예를 들어 5*4 이면 5와4는 피연산자이고 *는 연산자라고 하겠네!

 

 

i++ / i -- 

-> 먼저 다른 연산을 수행한 후, 피연산자의 값을 증가/감소

++i / --i

-> 피 연산자의 값을 증가/감소 시킨 후, 다른 연산을 수행

 

 

이거 많이 헷갈렸는데 해결했다.

직관적으로 이해하면, 당연히 ++가 앞에 있다면 먼저 수행하겠지 이런식으로 이해했다.

 

 

 

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

var x ="1"

console.log(+x)
// 1

그래서 강사님이 실무에서 이게 편해서 문자에 +를 많이 붙인다고 하셨었던게 이해가 되었다.

음...프로젝트 할때는 "01012341234" 이렇게 있을때

+를 붙여서 간단히 숫자로 만들어주면 편하겠다는 생각을 했다.

 

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

 

(위의 이미지 하나로 모든 설명 가능)

 

 

 

할당 연산자는 우항에 있는 피연산자의 평과 결과를 좌항에 있는 변수에 할당한다.

 

x*=5

x/=5

x%=5

 

익숙해 보이지 않는 할당 연산자만 정리해 놓았다. 아마=이 다 붙어있어서 산술 연산자로 취급하지 않는 듯 하다.

 

동등 비교(==) 연산자는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치 시킨 후 같은 값인지

비교한다.

 

그래서 실무에서는 동등비교(==)연산자 보다는 일치 비교(===) 연산자를 더 많이 쓴다고 한다.

왜냐하면 예측하기 어려운 결과를 만들 뿐더러, 타입 변환을 한번 더 거치기에 비효율적이다.

프로젝트할 때도 ===를 쓰자!

 

삼항조건 연산자 표현식은 값처럼 사용할 수 있지만, if...else문은 값처럼 사용할 수 없다.

 

 

 

var x = 10 

var result =if(x%2) {result = "홀수"}, else {result="짝수"} -> 에러
var x=10

var result = x%2 ? "홀수" : "짝수"
console.log(result)
//결과 짝수

 

어디서나 값으로 들고 다닐 수 있다는 점이 삼항연산자의 매력인거 같다. 사실 따지고 보면 값으로 취급될 수 있는 건 어쨌든 값이어야하기에 삼항연산자만이 값처럼 사용할 수 있다.

 

typeof 연산자는 피연산자의 데이터 타입을 문자열로 반환한다.

 

tpyeof NaN

// number

typeof null

// object

typeof true 

// boolean

typeof ' ' 

// String

 

헷갈리는것만 모아놓았다. typeof 연산자는 특히 프로젝트에서 꽤나 유용하다고 생각한다.

왜냐하면 예를들어 이렇게 활용할 수 있겠다.

inpu을 유저로부터 입력값을 받았는데, 그게 문자를 입력해야하는데 숫자를 섞어서 했다거나 그러면

에러 메시지를 보내는 등...

 

 

 

앞으로도 이렇게 그냥 책을 읽는 것이 아니라,

실무에 어떻게 사용될지를 염두에 가며 읽어야겠다.

그래야 죽은 지식이 아니니까

 

참고문헌: 이웅모, 『모던 자바스크립트 Deep Dive, 위키북스(2020), p74~p.92