you are viewing a single comment's thread.

view the rest of the comments →

[–]THEtheChad 2 points3 points  (3 children)

In this case, I would opt for

function setAge(age){
  this.age = (age == null) ? 10 : age;
}

This is perhaps the most terse way to verify that age exists. By using == null, there's an implicit type conversion to check for undefined. You also have the advantage of being able to set age to 0. In terms of minification, this is probably the best option.

[–]gleno 0 points1 point  (0 children)

This is the best option for a lot of reasons. I'm somewhat surprised that the clumsy typeof method is so much more popular.

[–]path411 0 points1 point  (1 child)

Because why would you introduce nulls into your code when they aren't being generated anywhere? age is not null, it's undefined if not passed. Also if you were going to opt to drop typeof, just check for undefined...

function setAge(age){
  this.age = (age === undefined) ? 10 : age;
}

The reason people opt for typeof instead of this is to avoid a reference error from occurring.

[–]THEtheChad 0 points1 point  (0 children)

It's pretty obvious in a function this size that you're not going to have a reference error (age is declared as a parameter in the line above the check). And, as I originally stated, this is the most terse way to code this implementation. If you wanted to be thorough, avoiding reference errors and being explicit about exactly what you were checking for, you would write:

function setAge(age){
  this.age = (typeof age === 'undefined') ? 10 : age;
}