반응형

javascript에서는 함수를 3가지 방법으로 정의할 수 있습니다.

1. Function 생성자 함수 이용

let add = Function('a', 'b', 'return a + b;');

console.log(add(10, 20));

가장 일반적이지 않은 방법으로서 실무적으로는 사용할 일이 거의 없을 것 같습니다. 다만 다른 함수정의 방식으로 함수를 생성하더라도 내부적으로는 생성자 함수를 통해서 함수가 만들어지게 됩니다. 때문에 javascript에서 모든 함수는 그 자체로 객체 입니다.

2. 함수 선언문 이용

function add(a, b)
{
  return a + b;
}

console.log(add(10, 20));

function 다음에 함수명을 반드시 포함해야 하며, 이 이름으로 함수를 호출할 수 있습니다. 함수 선언문을 이용해 함수를 정의하면 함수 호이스팅(function hoisting)이 일어납니다. 함수 호이스팅은 함수 정의를 소스 유효범위 내 가장 위로 끌어 올리는 것을 말합니다.
그래서 다음과 같이 함수 정의를 하기 전에 함수를 사용하더라도 오류가 발생하지 않습니다.

console.log(add(10, 20));

function add(a, b)
{
  return a + b;
}

3. 함수 표현식 이용

let add = function (a, b)
{
  return a + b;
}

console.log(add(10, 20));

function 다음에 함수명이 없는 익명 함수 리터럴을 사용할 수 있으며 이를 변수에 할당하여 함수를 생성 합니다.
할당된 변수이름 뒤에 괄호를 붙여서 함수 호출을 할 수 있습니다.
이 경우에는 함수 호이스팅이 일어나지 않아서 만약 함수 정의 전에 함수를 사용하면 오류가 발생 합니다.

일반적으로는 익명 함수 형태로 사용하며 함수 내에서 재귀 호출이 필요한 경우에는 다음과 같이 함수명을 사용할 수도 있습니다. 다만 이때의 함수명은 함수 정의 밖에서는 사용할 수 없습니다.

let factorial = function _factorial (num)
{
  if (num > 1)
  {
    return num * _factorial(num - 1);
  }
  else
  {
    return 1;
  }
}

console.log(factorial(5));  // 120
console.log(_factorial(5)); // not defined 에러

 

반응형
반응형

자바스크립트에는 !를 두 개 붙인 !! 연산자가 있는데 !! 다음의 값(피연산자)에 대하여 불린값을 반환한다.

console.log(!!0);
console.log(!!1);
console.log(!!'');
console.log(!!'hello');
console.log(!!false);
console.log(!!true);
console.log(!!null);
console.log(!!undefined);
console.log(!!{});
console.log(!![]);

null 과 undefined는 모두 false 이고, 빈 배열 및 빈 객체는 모두 true 인 점을 주의할 필요가 있다.

당연하겠지만 not 연산자인 !와 함께 !!!를 사용하면 반대되는 불린값을 얻게 된다.

console.log(!!!0);
console.log(!!!1);
console.log(!!!'');
console.log(!!!'hello');
console.log(!!!false);
console.log(!!!true);
console.log(!!!null);
console.log(!!!undefined);
console.log(!!!{});
console.log(!!![]);

false를 다음과 같이 Boolean 객체로 만들면

console.log(!!(new Boolean(false)));

값(valueOf())이 false 라도 객체이기 때문에 true가 된다.

 

반응형
반응형
일반적으로 javascript 디버깅시에는 alert()를 주로 사용하게 되지만, alert를 실행 하는 순간 script가 멈추기
때문에 디버깅이 어려운 경우가 있다.
이런 단점을 극복할 수 있는 유용한 Javascript 디버깅 엔진을 소개 한다.

이름하여 blackbird(http://www.gscottolson.com/blackbirdjs/).



사용방법은 압축파일을 풀어서 blackbird.css, blackbird.js, blackbird_panel.png, blackbird_icons.png 파일을 웹폴더에 복사한 후 소스코드 각각 아래 처럼 추가 하고(물론 href 및 src 경로는 본인의 웹폴더 경로로 줘야 한다),

<link type="text/css" rel="Stylesheet" href="/blackbird.css" />
<script type="text/javascript" src="/blackbird.js"></script>

javascript로 다음과 같이 디버깅을 할 수 있다.

log.debug( 'this is a debug message' );
log.info( 'this is an info message' );
log.warn( 'this is a warning message' );
log.error( 'this is an error message' );


* 주의: 여기 까지가 홈페이지에 소개된 내용인데, 사실 이대로 해보면 Javascript 오류가 나면서 동작을 하지 않는다.
반드시 아래와 같이 DTD선언을 해줘야 한다(이것 찾느라 애 먹었음).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">

또한 처음에 디버깅 판넬이 나타나지 않으면 F2를 누르면 된다.



반응형

+ Recent posts