Day 6 of My JavaScript Visual Series 📚✨
💡 Arrow Function vs Normal Function in JavaScript – Why It Actually Matters in Interviews.
As a beginner, I used to think both functions are the same. But here's what interviewers love to ask the difference in how "this" behaves in both!
🔹 Normal Function:
this refers to the object calling the function.
🔹 Arrow Function:
this refers to the parent scope (lexical scope). It does not bind its own this.
So if you're using this inside a method, be very cautious using arrow functions!
const obj = {
name: "Azaan",
sayHi: function () {
console.log("Hi", this.name); // Works ✅
},
greet: () => {
console.log("Hello", this.name); // Undefined ❌
}
};
Fun Fact : Arrow function is also called fat arrow function.
Use Case:
A couple of days ago, I was debugging a login feature in my app. Everything seemed perfect... except it kept saying "Invalid Password" even for correct ones.
The issue? I used an arrow function inside my comparePassword method. 🤦♂️
It couldn't access this.password from the Mongoose model correctly.
// ❌ Wrong: 'this' doesn't refer to the document
userSchema.methods.comparePassword = (inputPassword) => {
return bcrypt.compare(inputPassword, this.password);
};
// ✅ Correct: 'this' refers to the Mongoose document
userSchema.methods.comparePassword = function (inputPassword) {
return bcrypt.compare(inputPassword, this.password);
};
Top comments (0)