안녕하세요송기석입니다.

 

새해 복 많이 받으세요.


한 주가 너무 빨리 갑니다. 하루 하루가 순식간에 사라져 버리는 듯한 느낌입니다. 이렇게 빠른 시간은 제가 그만큼 열심히 살고 있기 때문이라고 믿고 하루 하루를 소중히 보내고 싶습니다.

인수 배열(arguments)


  함수를 호출 할 때 추가적인 매개변수로 arguments를 사용할 수 있습니다. 이 매개변수는 특이하게 배열처럼 length를 사용할 수 있지만 배열이 가지는 메소드들은 없습니다. 다시 말하면 배열이 아닌 배열 같은 객체입니다. 이 매개변수는 함수를 호출할 때 전달된 모든 인수를 접근할 수 있습니다. 다음 예는 매개변수를 정해 놓지 않고 넘어오는 인수의 개수에 맞춰서 동작하는 함수입니다.


var sum = function () { var i, sum = 0; for (i = 0; i < arguments.length; i += 1) { sum += arguments[i]; } return sum; }; console.log(sum(4, 8, 15, 16, 23, 42)); // 108

성자 함수를 사용하는 스타일은 권장 사항이 아닙니다.


반환


함수는 항상 값을 반환합니다. 반환값이 지정되지 않으면 undefined가 반환됩니다. 함수는 return문을 만나면 함수의 끝에 도달하기 전에 제어를 반환할 수 있습니다. 함수를 new와 함께 실행하고 반환값이 객체가 아닌 경우 반환값은 새로운 객체(this)가 됩니다.

예외


다음은 예외 처리에 대한 코드입니다.

var add = function (a, b) { if(typeof a !== 'number' || typeof b !== 'number') { throw { name: 'TypeError', message: 'add needs numbers' }; } return a + b; }; var try_it = function () { try { add("seven"); } catch (e) { console.log(e.mame + ': ' + e.message); } }; try_it(); // "undefined: add needs numbers"


try 블록 내에서 예외가 발생하면 catch 블록으로 제어가 이동합니다. try 문은 모든 예외를 포착하는 하나의 catch 블록만을 갖습니다. 만약 예외 상황에 따라 그에 맞게 대처하고 싶은 경우 예외 객체의 name 속성을 확인하여 그에 맞게 처리하면 됩니다.