Top 10 Most Common JavaScript Errors and How to Prevent Them
This article analyzes the ten most frequent JavaScript errors identified from over a thousand projects, explains why each occurs, and offers practical code examples and preventive techniques to help developers avoid these common pitfalls.
1. Uncaught TypeError: Cannot Read Property
This error appears when a script tries to read a property or call a method on an undefined object, often because component state is not initialized before rendering.
class Quiz extends Component {
constructor(props) {
super(props);
this.state = { items: [] };
}
componentWillMount() {
axios.get('/thedata').then(res => {
this.setState({ items: res.data });
});
}
render() {
return (
<ul>
{this.state.items.map(item => <li key={item.id}>{item.name}</li>)}
</ul>
);
}
}2. TypeError: ‘undefined’ Is Not an Object (evaluating…)
Safari throws this when accessing a property on an undefined value; it mirrors Chrome’s Cannot read property error but with a different message.
3. TypeError: Null Is Not an Object (evaluating…)
Occurs when code attempts to use a null reference, such as accessing DOM elements before they exist. Using strict equality checks ( ===) helps differentiate null from undefined.
4. (unknown): Script Error
Cross‑origin script errors are masked as “Script error” for security reasons. To see the real message, configure the server to send Access‑Control‑Allow‑Origin headers and add crossorigin="anonymous" to script tags.
5. TypeError: Object Doesn’t Support Property
In Internet Explorer, calling a method that does not exist on an object results in this error. Using fully‑qualified namespace calls (e.g., Rollbar.isAwesome()) avoids the issue.
6. TypeError: ‘undefined’ Is Not a Function
This Chrome error is triggered by invoking a function that is undefined, often due to incorrect this binding inside callbacks. Solutions include storing this in a variable (e.g., var self = this;) or using bind():
function testFunction() {
this.clearLocalStorage();
this.timer = setTimeout(this.reset.bind(this), 0);
}7. Uncaught RangeError: Maximum Call Stack Size Exceeded
Caused by infinite recursion or passing out‑of‑range arguments to functions like Number.toExponential() or Number.toFixed(). Keeping recursion terminating and using valid numeric ranges prevents this error.
8. TypeError: Cannot Read Property ‘length’
Happens when trying to read .length of an undefined variable, often because a function parameter shadows a globally defined array. Removing the parameter or passing the array explicitly resolves the issue.
9. Uncaught TypeError: Cannot Set Property
Attempting to assign a property to undefined throws this error. Ensure the target object is created before setting its properties.
10. ReferenceError: Event Is Not Defined
This error appears when an event handler references the event object without receiving it as a parameter. Always declare the handler as function (event) { … } and avoid relying on legacy global event variables.
Conclusion
Most of these null or undefined errors are pervasive. Using a static type checker like TypeScript with strict options can catch many of them at compile time, helping developers write more robust JavaScript code.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Architecture Digest
Focusing on Java backend development, covering application architecture from top-tier internet companies (high availability, high performance, high stability), big data, machine learning, Java architecture, and other popular fields.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
