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 <[email protected]> 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 <[email protected]> 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 [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> 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 [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to