4
  1. Is there a difference between typeof value === "undefined" and value === undefined?

  2. Why did JavaScript need Array.isArray() in ECMAScript 5? Can't I just call value instanceof Array to determine whether an given variable is an array?

1 Answer 1

7
//var value; There is no var declaration. The variable was never declared

// check againts undeclared variables
typeof value === "undefined"; // works

// check againts declared variables with no value
value === undefined; // ReferenceError: value is not defined

There are also issues with undefined = true being valid. But you don't really care about that. No-one is stupid enough to alter undefined globally these days.

I also know of bugs with instanceof being broken. I can't give you the exact reason why Array.isArray is better though.

You will find criticism on instanceof in the JavaScript Garden

If you read this Article It mentions how instanceof does not work across seperate frames / windows / iframes.

Because instanceof checks againts Array and each window has it's own window.Array.

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks! I just tried var foo; (foo === undefined); in my FF4 JS console and didn't get a reference error. What gives?
@FooBarMaximus you get a reference error if you drop var foo ;) typeof works without the var declaration.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.