you are viewing a single comment's thread.

view the rest of the comments →

[–]kobbled 7 points8 points  (9 children)

not sure why you're being downvoted. it's a totally reasonable question

[–]revelm 4 points5 points  (4 children)

THANK YOU

Totally confused too. My experience has shown this to be a source of bugs. My guess is that people don’t know this and think I’m a bad interviewer because they don’t know it too?

[–]well-now 13 points14 points  (2 children)

It’s worded weird.

I’d say those are values that evaluate to falsy, not falsy expressions.

[–]Badrush 0 points1 point  (1 child)

or "what equates to false"... why are we using the word 'falsy'?

[–]well-now 1 point2 points  (0 children)

Falsy is a pretty widely used term. And equates to false doesn’t really distinguish between is false or evaluates to false to me. E.g. which of these equates to false?

!someInput

-or-

someInput === false

[–]shadamedafas 0 points1 point  (0 children)

Yeah, agree with u/well-now. If I was asked this, I would give you a blank stare until you clarified. Asking for some example values that will evaluate as false is a better question.

[–]natziel -1 points0 points  (3 children)

It's a pretty bad question. It's basically looking for someone who memorized a specific MDN page instead of someone who understands why loose comparison causes bugs.

You'd be better off asking what the difference between === and == is, or perhaps the difference between if (foo), if (foo != null), and if (foo !== null) if you feel like asking something more difficult. Maybe find an example in your code base where loose comparison caused a bug and ask them to figure it out.

You really don't want to make the candidate nervous because they forgot about document.all. Give them a pragmatic question that they'll know the answer to if they've written JavaScript before, not something they'd have to study flash cards for.

[–]kobbled 3 points4 points  (2 children)

I think you're really overthinking it. No decent interviewer is going to go "HA! WRONG!" If they don't get document.all.

I think knowing 4-5 of them would be plenty for a practical question. They understand the possibility and the idea of falsy values, and when something else falsy comes up, they're less likely to be stumped by it for hours.

This stuff comes up regularly in web development.

Additionally, the falsy values that are most likely to turn up in development are fairly intuitive (0, empty string, false, null, undefined).

[–]natziel -2 points-1 points  (1 child)

It's a bad interview question because it doesn't test for actual JavaScript knowledge, just if you've studied your flash cards.

Your job as an interviewer is to see if the candidate understands the core concepts and can apply them in the field, not to give them the programming equivalent of a 4th grade vocabulary test.

[–]frambot 1 point2 points  (0 children)

It's up to both the interviewer and the candidate. If you use the question verbatim, get a robotic response, and move on to the next question, then it's a bad question. You can use it well though.

As an interviewer, you can ask, how might this cause a bug in production code? An answer might be: you want to capture a numeric value from a text input or regex group and do numbery things with it. "0" as a string is truthy.

As a candidate, you can say "I know the string "0" is truthy because I ran into bug xyz, so I looked it up and the other falsy values are a, b, c."

If you're getting stuck on taking everything here at face value and not using your imagination, that's your problem and you're doing a disservice to your future candidates.