4.강제변환_4

악음·2021년 8월 9일
0

i will know javascript

목록 보기
11/12
post-thumbnail

4.4.2 암시적 감제변환 :문자열 <-> 숫자

(이전에 내용은 과감히 패스했다)

+연산자는 숫자의 덧셈, 문자열 접합 두가지 목적으로 오버로드 된다. 자바스크립트 엔진은 연산자를 보고 어떤 연산을 해야 할지 어떻게 알까?

  • +연산자는 숫자의 덧셈/문자열 접합 두가지 목적으로 오버로드 된다

//숫자의 덧셈 
let a = 4
let b = 38
a+b // 42

//문자의 접합
let c = "4"
let d = "38"
c+d // "438"
  • 때문에 한쪽/양쪽이 문자열인가 아닌가에 따라 문자열 접합을 결정한다고 생각할 수 있지만 다음코드를 보면 이생각이 달라 질 것이다
let a = [1,2]
let b = [3,4]
a+b // '1,23,4'
  • 피연산자 a,b 모두 문자열이 아니지만 분명히 문자열로 강제 변환된 후 접합도었다 무슨 일인가?

ES5에 의하면
+알고리즘(피연산자가 객체값일 경우)한쪽 피연 산자가 문자열이거나 다른 과정을 통해 문자열 표현형으로 나타낼 수 있으면 문자열 붙이기를 한다.

  • 이후 일련에 과정을 통해 문자열화 할 수있는 객체들은 모두 문자열이 된뒤에 문자 접합이 되어 결과가 도출된다.

즉 문자열이 될수 있는 값을은 모두 문자열이되어 문자접합이 된다.

(+)이외에 -,*,/ 는 문자열 변환 기능이 없으므로 모두 숫자로 변환하여 계산한다.

4.4.5 && 연산자 || 연산자

OR,AND 연산자

자바스크립트에서의 && || 연산자는 true/false를 반홚나는 연산자가 아니다 값을 Boolean()으로 강제변환하여 연산한뒤 값을 반환한다.

다음 코드를 보자

let a = 42
let b = "abc"
let c = null
a||b // 42
a&&b // 'abc'
c||b //'abc'
c&&b // null

첫번째 두번째 피연산자를 toBoolean으로 변환하여 평가한다.

  • &&는 첫번째 연산자가 true면 두번째 연산자를 반환
  • ||는 첫번째 연산자가 true면 첫번째 연산자를 반환한다.

and는 2개의 값이 모두 true이어야 true을 반환한다

  • 첫번째 값이 false이면 첫번째에서 연산을 그만둔다.
  • 때문에 자기 자신이 나온다
  • 첫번쨰 값이 true면 두번째로 넘어간다(다음걸 체크하기위해) 따라서 두번쨰 값이 반환
  • 만약 계속 이런식으로 이어지는 식이있다면 그리고 그값들이 모두 true이면 마지막값을 반환한다.

or는 둘중 하나라도 값이 true면 true를 반환한다.

  • 첫번째 값이 true이면 자기자신에서 멈춘다(이미 true을 반환했으므로)
  • 첫번쨰 값이 false가 되더라도 다음번에 둘중 하나라도 true이면 true를 반환하기때문에 다음 값으로 넘어간다
  • 다음값이 false이고 마지막 값이면 그값을 넘긴다(마지막값이 아니면 다음으로 넘어간다)

햇갈린다면 다음과같이써보자


  • 첫번째 값이 true이면 다음것을 반환하라 &&
  • 첫번쨰 값이 false이면 다음값을 반환하라 ||
  • 첫번쨰 값으로 분기처리하여 쓰고싶다면 삼항식을 사용하자

profile
RN/react.js개발자이며 배운것들을 제가 보기위해서 정리하기 때문에 비속어 오타가 있을수있습니다.

0개의 댓글