러닝 자바스크립트 5장 정리

 

산술 연산자 

 - C언어와 거의 동일, 전위 연산자는 먼저 변수의 값을 바꾼 다음에 평가하고 후위 연산자는 값을 바꾸기 전에 평가한다. 

let x = 2;

const r1 = x++  +  ++x;       // 2+3 = 5,  x는 4 

const r2 = ++x  +  ++x;       // 5+6 = 11,  x는 6  

const r3 = x++  +  ++x;       // 6+8 = 14,  x는 8

 

 

연산자 우선순위

 - 괄호가 가장 먼저이고 그 다음 곱셈과 나눗셈, 마지막으로 덧셈과 뺄셈을 한다. 우선순위가 같은 연산자들은 오른쪽에서 왼쪽으로, 왼쪽에서 오른쪽으로 평가한다. 

 

 

비교 연산자 

 - 일치함 (' === '), 동등함 (' == '), 대소 관계의 세가지 타입으로 나뉜다. 두 값이 같은 값을 가리키거나 같은 타입이고 값도 같으면 일치한다고 한다. 한편  두 값이 같은 객체를 가리키거나 같은 값을 같도록 변환할 수 있다면 동등한다고 한다.

 

 

논리 연산자의 단축평가

 - AND 연산에서는 x의 값이 거짓 같은 값이면 모두 평가하지 않아도 false임을 알 수 있다. 이런 동작을 단축 평가라고 한다.

 

const skipIt = true;

let x = 0;

const result = skipIt || x++;

 - 세 번쨰 행에서 단축 평가가 일어나므로 x의값은 그대로 0이된다.  

 

 

조건 연산자 

 - 자바스크립트의 유일한 3항 연산자 if ~ else 문과 동등한 표현식 

 

const doIt = false;

const result = doIt ? "Did It!" : "Didn't do it";

 - 물음표 앞의 첫 번쨰 피연산자가 참 같은 값이면 식의 값은 두변째 피연산자이고 거짓 같은 값이면 식의 값은 세번째 피연산자가 된다. 

 

 

쉼표 연산자 

 - 표현식을 결합하여 두 표현식을 평가한 후, 두 번째 표현식의 결과를 반환한 것이다. 

 

let x = 0, y = 10, z;

z = (x++, y++);

 - x와 y는 1만큼 늘어나지만 z의 값은 10으로 y++가 반환하는 값 그대로이다. 

 

 

해체 할당 

 - 객체나 배열을 변수로 해체할 수 있다. 

 

객체 해체

const obj = { b : 2, c : 3, d : 4 };

 

const { a,b,c } = obj;

a;                        // undefined

b;                       // 2

c;                       // 3

d;                      // ReferenceError

 - 객체를 해체할때는 반드시 변수 이름과 객체의 프로퍼티 이름이 일치해야 한다. 프로퍼티 이름이 유효한 식별자만 해체후 할당되기 때문이다. 

 

배열 해체

const arr = [ 1, 2, 3 ];

 

let [ x, y ] = arr;

x;           // 1

y;           // 2 

z;           // ReferenceError

 - x는 배열의 첫 번째 요소 , y는 두 번쨰 요소 값을 할당받는다. 그 뒤의 배열 요소는 모두 버려진다.  

 

const arr = [ 1, 2, 3, 4, 5 ];

 

let [ x, y ... rest ] = arr; 

x;                    // 1

y;                    // 2 

rest;                // [ 3, 4, 5 ]

 - 변수 rest에 나머지가 저장된다. 

 

 

if ... else문을 3항 연산자로 바꾸기 

if (isPrime(n)) {

     label = 'prime';

} else {

label = 'non-prime'; 

}

위의 코드는 다음과 같이 바꿀 수 있다.

label = isPrime(n) ? 'prime' : 'non-prime';

 

 

if 문을 단축 평가하는 OR 표현식으로 바꾸기 

 

if (!options) options = {};

다음과 같이 바꿀 수 있다. 

options = options || {};

 

 

TAGS.

Comments