자바스크립트에서 "!--"는 무슨 일을하는거죠?


var walk = function(dir, done) {
    var results = [];

    fs.readdir(dir, function(err, list) {
        if (err)
            return done(err);

        var pending = list.length;

        if (!pending) 
            return done(null, results);

        list.forEach(function(file) {
            file = path.resolve(dir, file);
            fs.stat(file, function(err, stat) {
                if (stat && stat.isDirectory()) {
                    walk(file, function(err, res) {
                        results = results.concat(res);

                        if (!--pending)
                            done(null, results);
                    });
                } else {
                    results.push(file);

                    if (!--pending) 
                        done(null, results);
                }
            });
        });
    });
};

인터넷에서 이런 코드를 보게되었는데 코드를 해석하다가 !--pending이라는 줄을 보고 제가 아는 지식에서는 본적없는 구문이라 질문드립니다. !--는 대체 무슨 코드이며 어떤 일을 하는지 알려주세요.

  • 2016년 02월 25일에 작성됨

조회수 146


1 답변


좋아요
1
싫어요
채택취소하기

!--연산자는 !--가 합쳐진 연산자입니다. 그냥 붙여쓴건데요. 우선 !연산자는 값을 invert해주는 연산자로

!true == false
!false == true
!1 == false
!0 == true

이런식으로 true면 false로 false면 true로 만들어줍니다.

그리고 --연산자는 값을 1감소시키는 연산자입니다.

var a = 1, b = 2;
--a == 0
--b == 1

이런 식으로요.

참고로 !연산자에서 숫자의경우는 0이아니면 0으로만들고 0이면 1로 만들어줍니다.

pending = 2; !--pending == false 
pending = 1; !--pending == true
pending = 0; !--pending == false

이런식으로 말이죠.

  • 2016년 02월 25일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close