==
: Equal Operator
두 피연산자의 값의 타입이 다를 경우 자동으로 일부 피연산자의 타입을 변환 후 값을 비교한다.
===
: Strict Equal Operator
타입을 변환하지 않으므로 Strict, 엄격하게 비교할 때 사용한다.(type이 다르면 false를 반환)
ex)
1 === '1' /// false를 반환한다.
1 == '1' /// true를 반환한다.
ex)
AND 연산자(&&)를 사용했을 경우 두 조건이 모두 truthy 해야만 true, 그렇지 않으면 false가 출력됨
true && true // true
true && false // false
false && false // false
ex) 학생이면서, 여성일 때 통과
isStudent && isFemale; // and 연산자
OR연산자(||)를 사용했을 경우 두 조건 중 하나라도 truthy한 값일 경우 true, 그렇지 않으면 false가 출력됨
true || true // true
true || false // true
false || false // false
ex) 학생이거나, 여성일 때 통과
isStudent || isFemale; // or 연산자
NOT연산자는 결과가 true이면 false를, false이면 true를 반환. 2개 이상을 중첩하는 것도 가능함
!false // true
!(3>2) // false
!undefined // true
-> undefined false로 취급(falsy)
!'Hello' // false
-> 문자열(빈 문자열이 아니면)을 모두 참으로 취급(truthy)
ex) 학생이 아니면서, 여성일 때 통과
!isStudent && isFemale;
if
, false
, null
, undefined
, 0
, NaN
, ''
-> 다음은 if 문에서 false로 변환되므로, if 구문이 실행되지 않음.
if (false)
if (null)
if (undefined)
if (0)
if (NaN) --- Not a Number이라는 뜻!
if ('')
-str[index]
var str = 'restaurant';
ex) console.log(str[0]); // 'r'
특징
- index로 접근은 가능하지만 쓸 수는 없다 !
- immutable value이지만 재할당은 가능하다
- 연산자를 쓸 수 있음
string 타입과 다른 타입 사이에 +연산자를 쓰면, string 형식으로 변환(toString)
var str = 'restaurant';
console.log(str.length); // 10
-> substring과 slice의 차이점
start > end 일 경우 두 함수의 처리가 다름
substring() :
start 값과 end 값을 바꾸어서 처리
slice() :
비어있는 string, 즉 ""을 리턴
what is Immutable? Mutable?
mutable | immutable |
---|---|
- 변할 수 있는(원본이 변함) | - 불변, 변할 수 없는(원본이 변하지 않음) |
- 참조타입 | - 원시타입 |
- 해당 데이터 주소를 찾아 값을 변경함 | - 해당 데이터 주소와 별개의 새로운 주소에 값이 할당됨 |
- Array Method = Array.splice(), Array.unshift(), Array.shift(), Array.push(), Array.pop() | - String Method = String.slice(), String.replace(), String.split() |