KoderSolution Logo
HomeArticlesTutorialsForumAI LabRun Code
KoderSolution Logo

The world’s most advanced technical ecosystem for modern software engineers. Learn, build, and grow with next-generation developer tools and resources.

Engineering Newsletter

Join 100,000+ engineers receiving curated high-signal content weekly.

Platforms

  • Technical Articles
  • Interactive Tutorials
  • AI Coding Lab
  • Developer Forum
  • Developer Tools

Pages

  • About Us
  • Contact Us
  • Privacy Policy
  • Terms of Service
  • Refund Policy
  • Disclaimer
  • Advertisement

Popular Topics

  • PHP
  • Laravel
  • Python
  • React.Js
  • MySQL
© 2026 KoderSolutionAll Rights Reserved
Developed Bymaksudur.dev
⚡

JavaScript

Topic Hub & Articles

JS Introduction

10 min

JS Where To

10 min

JS Output

10 min

Recap Quiz

5 Questions

JS Statements

10 min

JS Syntax

10 min

JS Comments

10 min

Recap Quiz

5 Questions

JS Variables

10 min

JS Let

10 min

JS Const

10 min

Recap Quiz

5 Questions

JS Operators

10 min

JS Arithmetic

10 min

JS Assignment

10 min

Recap Quiz

5 Questions

JS Data Types

10 min

JS Functions

10 min

JS Objects

10 min

Recap Quiz

5 Questions

JS Events

10 min

JS Strings

10 min

JS String Methods

10 min

Recap Quiz

5 Questions

JS String Search

10 min

JS String Templates

10 min

JS Numbers

10 min

Recap Quiz

5 Questions

JS Number Methods

10 min

JS BigInt

10 min

JS Arrays

10 min

Recap Quiz

5 Questions

JS Array Methods

10 min

JS Array Search

10 min

JS Array Sort

10 min

Recap Quiz

5 Questions

JS Array Iteration

10 min

JS Array Const

10 min

JS Dates

10 min

Recap Quiz

5 Questions

JS Date Formats

10 min

JS Date Get Methods

10 min

JS Date Set Methods

10 min

Recap Quiz

5 Questions

JS Math

10 min

JS Random

10 min

JS Booleans

10 min

Recap Quiz

5 Questions

JS Comparisons

10 min

JS If Else

10 min

JS Switch

10 min

Recap Quiz

5 Questions

JS Loop For

10 min

JS Loop For In

10 min

JS Loop For Of

10 min

Recap Quiz

5 Questions

JS Loop While

10 min

JS Break

10 min

JS Iterables

10 min

Recap Quiz

5 Questions

JS Sets

10 min

JS Maps

10 min

JS TypeOf

10 min

Recap Quiz

5 Questions

JS Type Conversion

10 min

JS Destructuring

10 min

JS Bitwise

10 min

Recap Quiz

5 Questions

JS RegExp

10 min

JS Errors

10 min

JS Scope

10 min

Recap Quiz

5 Questions

JS Hoisting

10 min

JS Strict Mode

10 min

JS This Keyword

10 min

Recap Quiz

5 Questions

JS Arrow Function

10 min

JS Classes

10 min

JS Modules

10 min

Recap Quiz

5 Questions

JS JSON

10 min

JS Debugging

10 min

JS Best Practices

10 min

Recap Quiz

5 Questions

JS Common Mistakes

10 min

JS Performance

10 min

JS Reserved Words

10 min

Recap Quiz

5 Questions

DOM Intro

10 min

DOM Methods

10 min

DOM Document

10 min

Recap Quiz

5 Questions

DOM Elements

10 min

DOM HTML

10 min

DOM Forms

10 min

Recap Quiz

5 Questions

DOM CSS

10 min

DOM Animation

10 min

DOM Events

10 min

Recap Quiz

5 Questions

DOM Event Listener

10 min

DOM Navigation

10 min

DOM Nodes

10 min

Recap Quiz

5 Questions

DOM Collections

10 min

DOM Node List

10 min

JS Window

10 min

JS Screen

10 min

JS Location

10 min

Recap Quiz

5 Questions

JS History

10 min

JS Navigator

10 min

JS Popup Alert

10 min

Recap Quiz

5 Questions

JS Timing

10 min

JS Cookies

10 min

JS Callbacks

10 min

JS Asynchronous

10 min

JS Promises

10 min

Recap Quiz

5 Questions

JS Async/Await

10 min

Progress
0%

0 / 92 Lessons

JavaScriptJS Tutorial
Lesson

JS TypeOf

10 min reading
Free Course

JavaScript typeof: Type Inspection & Operating Quirks

The typeof unary operator returns a string indicating the type of the unevaluated operand. While reliable for primitives, typeof has historical quirks when inspecting null, arrays, and functions.

typeof Return Values Matrix

flowchart TD
    TypeOf["typeof operand"] --> Prim["Primitives"]
    TypeOf --> Ref["Reference Objects"]
    
    Prim --> PStr["String -> 'string'"]
    Prim --> PNum["Number -> 'number'"]
    Prim --> PBool["Boolean -> 'boolean'"]
    Prim --> PBig["BigInt -> 'bigint'"]
    Prim --> PSym["Symbol -> 'symbol'"]
    Prim --> PUnd["Undefined -> 'undefined'"]
    Prim --> PNull["null -> 'object' (HISTORICAL QUIRK!)"]
    
    Ref --> RFunc["Function -> 'function'"]
    Ref --> RArr["Array / Date / Object -> 'object'"]

Complete typeof Evaluation Table

Operand Value typeof Return Value Category / Note
"Hello" "string" Primitive String
42 / NaN "number" Primitive Number (NaN is a number type!)
true "boolean" Primitive Boolean
100n "bigint" Primitive BigInt
Symbol("id") "symbol" Primitive Symbol
undefined "undefined" Primitive Undefined
null "object" Historical JS Engine Bug (1995)
() => {} "function" Special Callable Object
[1, 2] "object" Array (Use Array.isArray())
{ a: 1 } "object" Plain Object

Practical Code Example

// Demonstrating typeof inspections, quirks, and reliable type check functions

// 1. Primitive and Function typeof checks
console.log(`typeof "Text": ${typeof "Text"}`);          // "string"
console.log(`typeof 42: ${typeof 42}`);                  // "number"
console.log(`typeof NaN: ${typeof NaN}`);                // "number" (Quirk!)
console.log(`typeof (() => {}): ${typeof (() => {})}`);  // "function"

// 2. The Null and Array Quirks
console.log(`typeof null: ${typeof null}`);              // "object" (Quirk!)
console.log(`typeof []: ${typeof []}`);                  // "object"

// 3. Reliable Robust Type Checker Function
function getExactType(value) {
  if (value === null) return "null";
  if (Array.isArray(value)) return "array";
  return typeof value;
}

console.log(`Exact Type null: ${getExactType(null)}`);   // "null"
console.log(`Exact Type []: ${getExactType([])}`);       // "array"
console.log(`Exact Type 10: ${getExactType(10)}`);       // "number"

Best Practices & Gotchas

  • Do Not Use typeof to Check for null: typeof null === "object" evaluates to true. Always check for null using val === null.
  • Do Not Use typeof for Arrays: typeof [] returns "object". Use Array.isArray(val).
  • Undeclared Variable Check: typeof undeclaredVar returns "undefined" without throwing a ReferenceError, making it safe for environment checks.

Self-Check Challenge

Write a function isFunction(val) using typeof that returns true if val is a callable function.

Save Your Progress

Unlock Your
Full Potential.

Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.

Quick Access With

Enterprise-Grade Security Protocol

Recommended Courses & Books

Try it Yourself

Experiment with the code from this lesson in our interactive playground.

Open Playground
Lesson Recap Quiz Available

Test Your Knowledge

You've completed this section! Take a quick 5-question quiz to check your understanding.

Stuck on this lesson?

Join our community of senior developers.

Ask in Forum