[node.js] 데이터나 조건의 유효성을 검사해주는 assert 모듈 #2(equal, strictEqual 함수)

assert 모듈은 assert 함수 뿐 아니라 다른 방식으로 유효성을 검사하는 함수를 지원한다.

equal 함수와 strictEqual 함수, notEqual 함수와 notStrictEqual 함수이다.

 

  • equal : 어떤 두개의 변수나 조건식의 결과 값이 다를 경우 오류 발생, 값의 타입은 무시

  • strictEqual : 어떤 두개의 변수나 조건식의 결과 값이 다를 경우 오류 발생, 값의 타입까지 검사

  • notEqual : 어떤 두개의 변수나 조건식의 결과 값이 같을 경우 오류 발생, 값의 타입은 무시

  • notStrictEqual : 어떤 두개의 변수나 조건식의 결과 값이 같을 경우 오류 발생, 값의 타입까지 검사

말로 설명하는 것 보다는 예제 소스를 보는게 훨씬 이해가 쉬울 것이다.

var assert = require("assert");

/*
    equal 함수는 두 변수나 조건식의 결과가 다를 경우 오류를 발생시킨다.
 */

var a = 10;
var b = 10;
var c = 30;

assert.equal(a, b);
console.log("a와 b는 같다");

assert.equal(a, c);
console.log("a와 c는 같다.");

이 소스코드를 실행시켜보면 아래 그림과 같이 출력된다.

a와 b를 비교한 코드는 정상적으로 작동했고

a와 c를 비교한 코드에서는 에러가 발생했다.

 

equal 함수는 값의 타입까지 비교하지는 않는다고 했다. 다음 예제를 보자.

var assert = require("assert");

/*
    equal 함수는 두 변수나 조건식의 결과가 다를 경우 오류를 발생시킨다.
 */

var a = 10;
var b = 10;
var c = 30;
var d = '10'; // 문자열 타입의 변수 추가

assert.equal(a, d); // a는 정수형 10이고, d는 문자열 10이다.
console.log("a와 d는 같다");

이 소스를 실행해보면 아래와 같은 결과가 출력된다.

a는 정수형이고 d는 문자열 형태의 변수이지만 equal 함수는 두 변수의 값만 볼 뿐,

자료형은 비교하지 않기 때문에 오류를 발생시키지 않고 정상적으로 다음 코드를 실행한다.

 

그 다음은 strictEqual 함수를 사용해서 비교해보자.

var assert = require("assert");

/*
    equal 함수는 두 변수나 조건식의 결과가 다를 경우 오류를 발생시킨다.
 */

var a = 10;
var b = 10;
var c = 30;
var d = '10'; // 문자열 타입의 변수 추가

assert.equal(a, d); // a는 정수형 10이고, d는 문자열 10이다.
console.log("a와 d는 같다");

assert.strictEqual(a, d);
console.log("a와 d는 같다");

strictEqual 함수는 변수의 값 뿐 아니라 자료형까지 함께 비교를 하기 때문에

값은 같을지라도 자료형이 다르면 다른 값이라고 판단하여 오류를 발생시킨다.

만약 node.js 프로젝트를 수행하면서 위 함수를 써야 한다면 둘 중에 뭐를 쓰고 싶을까?

equal 함수보다는 자료형까지 함께 비교해주는 strictEqual 함수를 사용할 것 같다.

 

참고로 equal 함수는 향후 지원을 중단할 예정이라고 한다. strictEqual 함수만 살아남는다.

 

notEqual, notStrictEqual 함수는? equal과 strictEqual의 반대 개념이기 때문에

별도의 예제를 다루지는 않을 것이다.

댓글

Designed by JB FACTORY