HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
The ReferenceError object represents an error when a variable that doesn't exist (or hasn't yet been initialized) in the current scope is referenced.
ReferenceError
ReferenceError is a serializable object, so it can be cloned with structuredClone() or copied between Workers using postMessage().
structuredClone()
postMessage()
ReferenceError is a subclass of Error.
Error
ReferenceError()
Creates a new ReferenceError object.
Also inherits instance properties from its parent Error.
These properties are defined on ReferenceError.prototype and shared by all ReferenceError instances.
ReferenceError.prototype
ReferenceError.prototype.constructor
The constructor function that created the instance object. For ReferenceError instances, the initial value is the ReferenceError constructor.
ReferenceError.prototype.name
Represents the name for the type of error. For ReferenceError.prototype.name, the initial value is "ReferenceError".
"ReferenceError"
Inherits instance methods from its parent Error.
try { let a = undefinedVariable; } catch (e) { console.log(e instanceof ReferenceError); // true console.log(e.message); // "undefinedVariable is not defined" console.log(e.name); // "ReferenceError" console.log(e.stack); // Stack of the error }
try { throw new ReferenceError("Hello"); } catch (e) { console.log(e instanceof ReferenceError); // true console.log(e.message); // "Hello" console.log(e.name); // "ReferenceError" console.log(e.stack); // Stack of the error }
Enable JavaScript to view this browser compatibility table.