[자바스크립트] 산술 연산자와 동등 연산자

minidoo·2020년 10월 16일
0
post-thumbnail

산술 연산자

  • + : 문자열을 우선시한다.
  • 그 외 ( - / * / / 등 ) : 숫자를 우선시한다.
console.log(3 + '2' + 3);	// '323'
console.log(3 * '2' * 3);	// 18

산술연산시 boolean은 숫자로 바뀌려는 노력을 한다.

console.log(true + true);	// 2
console.log(true + 2);		// 3
console.log(false - 3);		// -3

산술 연산시 객체는 toString화 된다.
따라서 '오버라이딩' 해준다.

console.log('3' + {foo: 'foo'});
console.log('3' + {foo: 'foo', toString() { return this.foo }});

// '3[object Object]'
// '3foo'

toString과 valueOf 중 valueOf가 우선시된다.

console.log("I'm " + {name1: 'hymein', name2: 'miniddo'
	, toString() { return this.name1 }, valueOf() { return this.name2 }});
    
// I'm miniddo 

산술 연산 시 배열은 , 를 기준으로 JOIN 된다.

console.log('5' + ['foo', 'bar']);	// 5foo,bar 

// ['foo', 'bar'].join(',')

동등 연산자

  • Truthy 한 값: '0', 'false', [], {}, function() {}
  • Falsy인 값: 0, NaN, false, null, undefined, ''
console.log(0 == "0");		- (1) true
console.log(0 == []);		- (2) true
console.log("0" == [])		- (3) false

(1) 모든 숫자는 문자로 바꿀 수 있다. 따라서 숫자를 문자로 변환하여 비교한다.
(2) 배열은 ','를 기준으로 join된다. 빈 배열은 ""가 되므로 falsy == falsy로 같다.
(3) "0" == ""

0개의 댓글