[JavaScript] 표현식과 연산자 - ③ 문자열, ④ 논리 연산자와 관계 연산자

ognatkwak·2022년 10월 30일
post-thumbnail

문자열 제어하기

문자열 연결

"+" 연산자는 피연산자가 모두 문자열이면 문자열로 연결한다.

"Hello" + "World!" // -> Hello World!
"1" + "2" // -> 12

피연산자 중 하나가 문자열 또는 문자열로 변환할 수 있는 객체라면 다른 피연산자의 타입을 문자열로 바꾼 다음 연결한다.

10 + "ltitle indians" //-> 10 ltitle indians
1 + {} //-> 1[object Object]
true + (new Date()) //-> trueTue Sat Aug ......

피연산자 두개를 숫자 또는 NaN으로 타입을 바꾸어 더한다.

문자열을 조작하는 메서드

문자열을 처리하기 위한 객체로 String 객체가 있다.

var msgObj = new String("Everything is practice.");

msgObj.length // -> 23
msgObj.charAt(3) // -> r
메서드설명
charAt(n)대상 문자열의 n번째 문자
includes(s [,n])대상 문자열의 n번째 문자부터 문자열 s를 포함하는지를 판별한 논리값
n을 생략하면 문자열의 끝부터 검색함
indexOf(s)대상 문자열에서 s가 처음 나오는 위치
lastIndexOf(s)대상 문자열에서 s가 마지막으로 나오는 위치
slice(m, n)대상 문자열의 m번째 이후 n번째 미만의 부분 문자열을 반환
m과 n이 음수면 문자열 끝이 시작 위치가 됨
split(s [,n])대상 문자열을 문자열 s로 분할한 문자열 배열을 반환
n은 발견된 문자열 개수를 제한
substring(m,n)대상 문자열의 m번째 이후 n번째 미만의 부분 문자열을 반환


논리 연산자와 관계 연산자

관계 연산자

두 개의 피연산자를 비교한 결과를 논리값(true, false)으로 반환

연산자예제예제의 뜻
==값이 같음a == ba 값과 b 값이 같으면 true, 그 외에는 false
!=값이 다름a != ba 값고 b 값이 다르면 true, 그 외에는 false
===값과 타입이 같음a === ba와 b의 값과 타입이 같으면 true, 그 외에는 false
!==값과 타입이 다름a !== ba와 b의 값과 타입이 다르면 true, 그 외에는 false
<작음a < ba 값이 b 값보다 작으면 true, 그 외에는 false
>a > ba 값이 b 값보다 크면 true, 그 외에는 false
<=작거나 같음a <= ba 값이 b 값보다 작거나 같으면 true, 그 외에는 false
>=크거나 같음a >= ba 값이 b 값보다 크거나 같으면 true, 그 외에는 false

동일 연산자

  1. 좌우 피연산자의 타입이 같을 때
    값이 같으면 true, 다르면 false

    var a = [1, 2, 3];
    var b = [1, 2, 3];
    var c = a;
    
    console.log( a == b); // -> false
    console.log( a == c); // -> true

    변수 a와 b에는 모두 배열의 참조가 저장되어 있어 같은 데이턱 담겨 있지만 메모리에서 차지하는 위치가 다르다.

  2. 좌우 피연산자의 타입이 다를 때

  • undefined와 null은 같은 것으로 친다
  • 한쪽이 숫자고 다른 한쪽이 문자열이면 문자열을 숫자로 변환해서 비교한다
  • 둘 중 한쪽이 논리값이면 true는 1, false는 0으로 반환해서 비교한다
  • 한쪽이 객체고 다른 한쪽이 숫자 또는 문자열이면 객체를 toString이나 valueOf 메서드를 사용해서 원시 타입으로 변환한 다음에 비교한다
  • 앞의 규칙에서 벗어나면 모두 '같지 않음'으로 판정한다
    null == undefined //-> true
    1 == "1" //-> true
    "0xff" == 255 //-> true
    true == 1 //-> true
    true == "1" //-> true
    (new String("a")) == "a" //-> true
    (new Number(2)) == 2 //-> true
    [2] == 2 //-> true

일치 연산자

피연산자를 평가한 후에 타입을 변환하지 않은 상태의 두 값을 엄격하게 비교한다.

null === undefined //-> false
1 === "1" //-> false
"0xff" === 255 //-> false
true === 1 //-> false
true === "1" //-> false
(new String("a")) === "a" //-> false
(new Number(2)) === 2 //-> false
[2] === 2 //-> false
NaN === NaN //-> false

논리 연산자

연산자예제예제의 뜻
&&논리곱a && ba와 b가 모두 true면 true, 그 외에는 false
논리합a ∥ ba와 b 중 하나라도 true, 그 외에는 false
!부정a ! ba가 true면 false, false면 true
x > 0 && y > 0 // x와 y가 모두 참일 때만 true
x > 0 || y > 0 // x와 y중 하나라도 참이면 true, 모두가 0 이하면 false
!(a && b) // a 또는 b가 거짓
profile
💃🏻

0개의 댓글