Bird
Raised Fist0
Javascriptprogramming~20 mins

Type checking using typeof in Javascript - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Type Checking Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of typeof with different values
What is the output of the following code snippet?
Javascript
console.log(typeof null);
A"boolean"
B"object"
C"undefined"
D"null"
Attempts:
2 left
💡 Hint
Remember that typeof null is a known quirk in JavaScript.
❓ Predict Output
intermediate
2:00remaining
Type of an array using typeof
What will be the output of this code?
Javascript
console.log(typeof [1, 2, 3]);
A"object"
B"array"
C"list"
D"undefined"
Attempts:
2 left
💡 Hint
Arrays are a special kind of object in JavaScript.
❓ Predict Output
advanced
2:00remaining
Output of typeof with function and symbol
What is the output of this code snippet?
Javascript
console.log(typeof function() {});
console.log(typeof Symbol('id'));
A"function" and "symbol"
B"object" and "string"
C"function" and "object"
D"object" and "symbol"
Attempts:
2 left
💡 Hint
Functions have their own type, and symbols are a unique primitive type.
❓ Predict Output
advanced
2:00remaining
Type of NaN using typeof
What will this code output?
Javascript
console.log(typeof NaN);
A"undefined"
B"NaN"
C"number"
D"object"
Attempts:
2 left
💡 Hint
NaN stands for Not-a-Number but is still a number type in JavaScript.
❓ Predict Output
expert
2:00remaining
Type checking with typeof and undefined variables
What is the output of this code?
Javascript
let a;
console.log(typeof a);
console.log(typeof b);
AReferenceError and ReferenceError
BReferenceError and "undefined"
C"undefined" and ReferenceError
D"undefined" and "undefined"
Attempts:
2 left
💡 Hint
typeof returns "undefined" for both declared but unassigned variables and undeclared variables without throwing errors.

Practice

(1/5)
1. What does the typeof operator return when used on the value 42?
easy
A. "string"
B. "object"
C. "boolean"
D. "number"

Solution

  1. Step 1: Understand the value type

    The value 42 is a number in JavaScript.
  2. Step 2: Apply typeof operator

    Using typeof 42 returns the string "number" because 42 is a numeric value.
  3. Final Answer:

    "number" -> Option D
  4. Quick Check:

    typeof 42 = "number" [OK]
Hint: Remember: numbers return "number" with typeof [OK]
Common Mistakes:
  • Thinking numbers return "string"
  • Confusing number with object
  • Using typeof without parentheses
2. Which of the following is the correct syntax to check if variable x is a string using typeof?
easy
A. if (typeof x = 'string') {}
B. if (typeof x === 'string') {}
C. if (typeof(x) == string) {}
D. if (typeof x === string) {}

Solution

  1. Step 1: Check correct operator usage

    The strict equality operator is ===, so typeof x === 'string' is correct.
  2. Step 2: Check string quotes and parentheses

    The type name must be a string literal in quotes, and parentheses around x are optional.
  3. Final Answer:

    if (typeof x === 'string') {} -> Option B
  4. Quick Check:

    Use === 'string' with quotes [OK]
Hint: Use triple equals and quotes around type name [OK]
Common Mistakes:
  • Using single equals (=) instead of triple (===)
  • Missing quotes around 'string'
  • Using typeof without quotes for type
3. What will be the output of the following code?
console.log(typeof null);
medium
A. "null"
B. "undefined"
C. "object"
D. "boolean"

Solution

  1. Step 1: Understand the value null

    In JavaScript, null is a special value representing "no object".
  2. Step 2: Apply typeof to null

    Due to a historical bug, typeof null returns "object" instead of "null".
  3. Final Answer:

    "object" -> Option C
  4. Quick Check:

    typeof null = "object" [OK]
Hint: Remember: typeof null returns "object" (quirk) [OK]
Common Mistakes:
  • Expecting "null" as output
  • Confusing with "undefined"
  • Thinking null is a boolean
4. Find the error in this code snippet:
let val = 10;
if (typeof val = "number") {
console.log("It's a number");
}
medium
A. Using single equals (=) instead of comparison operator
B. Missing semicolon after let declaration
C. Incorrect quotes around "number"
D. typeof cannot be used on variables

Solution

  1. Step 1: Check the if condition syntax

    The condition uses = which is assignment, not comparison.
  2. Step 2: Correct operator for comparison

    Use === or == to compare the result of typeof val with "number".
  3. Final Answer:

    Using single equals (=) instead of comparison operator -> Option A
  4. Quick Check:

    Use === for comparison, not = [OK]
Hint: Use === for comparison, not = [OK]
Common Mistakes:
  • Using = instead of === in if conditions
  • Thinking typeof returns variable type directly
  • Ignoring quotes around type string
5. You want to write a function isStringOrNumber that returns true if the input is either a string or a number, and false otherwise. Which of the following implementations is correct?
hard
A. function isStringOrNumber(value) { return typeof value === 'string' || typeof value === 'number'; }
B. function isStringOrNumber(value) { return typeof value === 'string' && typeof value === 'number'; }
C. function isStringOrNumber(value) { return typeof value == 'string' && typeof value == 'number'; }
D. function isStringOrNumber(value) { return typeof value = 'string' || typeof value = 'number'; }

Solution

  1. Step 1: Understand the requirement

    The function should return true if the value is a string OR a number.
  2. Step 2: Check logical operators and comparisons

    function isStringOrNumber(value) { return typeof value === 'string' || typeof value === 'number'; } uses || (OR) and strict equality ===, which is correct.
  3. Step 3: Identify errors in other options

    function isStringOrNumber(value) { return typeof value === 'string' && typeof value === 'number'; } and the option using == uses AND &&, which requires both types simultaneously (impossible). function isStringOrNumber(value) { return typeof value = 'string' || typeof value = 'number'; } uses assignment = instead of comparison.
  4. Final Answer:

    function isStringOrNumber(value) { return typeof value === 'string' || typeof value === 'number'; } -> Option A
  5. Quick Check:

    Use OR (||) and === for type checks [OK]
Hint: Use || for OR and === for type checks [OK]
Common Mistakes:
  • Using && instead of || for OR condition
  • Using = instead of === for comparison
  • Mixing == and === inconsistently
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard