Total: Today: Yesterday:
개발/JavaScript | 2016. 9. 22. 16:46 | Posted by 알 수 없는 사용자

평소에 자주 사용하지 않았던 자바스크립트 연산자를 알아봤다. 


1. 스프레드(...args) 연산자.
"배열 리터럴의 일부를 반복 가능한 식(다른 배열 리터럴 등)에서 초기화하거나 식을 함수 호출에서 여러 인수로 확장할 수 있습니다."

일반적으로 항목을 연결할때 concat메소드를 많이 이용하는데 스프레드 연산자(...args 로 사용)로도 가능하다.
하지만 스프레드 연산자는 반복 개체로만 연결이 가능하다.

var a = "a";
a.concat(["b","c"],"d"); //  "ab,cd"
var b= ["a"];
b.concat(["b","c"],"d"); //  ["a", "b", "c", "d"]

var a = ["a","b","c"];
...a // ---> Uncaught SyntaxError: Unexpected token ...
var b= ["a","b"];
[...b, ...["c"], "d"]; //  ["a", "b", "c", "d"]

concat 연산자와 비슷하게 사용되지만 반복개체로 호출해야만 에러가 발생하지 않는 것을 확인했다.

2. typeof 연산자.
"식의 데이터 형식을 나타내는 문자열을 반환합니다."

요 근래에 자주 사용하기 시작한 연산자이다.
보통 값을 비교할 때, 값과 값의 타입만 비교하는 "===" 나 "!==" 연산자로 사용한다.
내가 자주 사용하는 메소드는 String메소드(split, trim, replace 등)가 많았던 관계로 String 타입이 아니면 에러를 뱉어내곤 했었다.
그럴때 마다 값의 type만 비교하고 싶을때가 가끔 있었다.

typeof로 비교할수 있는 형식은 'number','string','boolean','object','function','undefined'  총 6가지 이다.
typeof 비교 형식은 대소문자를 가리기 때문에 반드시  소문자로만 적용해야 한다.

typeof "A" === 'string' //true
typeof "A" === 'number' //false
typeof 1 === 'undefined' //false
typeof 1 === 'number' //true
typeof bb === 'undefined' //true 변수 선언 X
typeof {} === 'object' // true
typeof "{}" === 'object' //false

3. void 연산자.
"식의 값을 반환하지 않게 합니다."

반환하면 항상 return을 사용하지만 굳이 함수가 아니더라도 값을 반환하지 않고 undefiend를 반환 하는 연산자이다.

function a (){ return "a" }
a() // "a"
void a() // undefined

var b = "b"
console.log(b) // "b"
console.log(void b) // undefined


4. delete 연산자.
"개체에서 속성을 삭제하거나 배열에서 요소를 제거합니다."

배열 삭제 메소드는 Array.splice()를 사용했었다. 하지만 splice는 배열삭제 메소드로 index도 같이 삭제된다.
delete 연산자를 이용하면 index는 그대로고 해당 index에 값만 삭제되는 것을 확인 할 수 있었다.

var ar = new Array (10, 11, 12, 13, 14);
delete ar[1] // true
console.log(ar) // [10, undefined × 1, 12, 13, 14]

var ar = new Array (10, 11, 12, 13, 14);
ar.splice(1,1) // [11]
console.log(ar) // [10, 12, 13, 14]



5. new 연산자.
"새 개체를 만듭니다."
new constructor([args])

new 연산자의 작업 수행은 아래와 같다.
멤버가 없는 개체를 만든다.
해당 개체에 대해 생성자를 호출하고 this포인터로 새로 만든 개체에 포인터를 전달한다.
생성자는 생성자에 전달된 인수에 따라 개체를 초기화한다.

my_object = new Object;
my_array = new Array();
my_date = new Date("Jan 5 1996");