Do you see the bug?

exports.get_user = function (id, func) {
       for (var i = 0; i < users.length; i ++) {
               if (users[i].id === id) {
                       func(null, users[i])
                       break;
               }
               if (i == users.length) // <-- Never happens, ever.
                       func("NOT_FOUND", null)
       }
}

Because the if(i == users.length) is INSIDE the for loop, it can't be
reached, since the for loop conditional will break out of the loop
before then.  It should go one line down, after the end of the
for(;;).




On Fri, Mar 9, 2012 at 08:40, Mark Volkmann <r.mark.volkm...@gmail.com> wrote:
> Here's another approach that I prefer:
>
> exports.get_user = function (id, cb) {
>  var user;
>   users.some(function (u) {
>    var found = u.id === id;
>    if (found) user = u;
>    return found;
>  });
>  cb(user ? null : 'not found', user);
> }
>
> On Fri, Mar 9, 2012 at 5:02 AM, Axel Kittenberger <axk...@gmail.com> wrote:
>> Many coders forget that you can use the "return" statement before the
>> end of the function. At least most people who finished some coding
>> course hardly ever do this. It usually simplifies many functions:
>>
>> exports.get_user = function (id, func) {
>>    for (var i = 0, z = users.length; i < z; i ++) {
>>         var u = users[i];
>>         if (u.id === id) {
>>             func(null, u);
>>             return;
>>         }
>>    }
>>    func('NOT_FOUND', null);
>> }
>>
>> Depending on optimizing speed vs memory use, or if this function is
>> heavly used compared to only seldomly (profiler!) l it might be a good
>> idea to keep a table handy, where the users are sorted with their id.
>>
>> --
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines: 
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to nodejs@googlegroups.com
>> To unsubscribe from this group, send email to
>> nodejs+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>
>
>
> --
> R. Mark Volkmann
> Object Computing, Inc.
>
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines: 
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to nodejs@googlegroups.com
> To unsubscribe from this group, send email to
> nodejs+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to