🧠 JavaScript Tricky Questions You Must Master for Your Next Interview! 🚀
🧠 JavaScript Tricky Questions You Must Master for Your Next Interview! 🚀
JavaScript may look friendly, but under the hood, it’s full of quirks that even experienced developers get stumped by! 😅 Whether you’re prepping for your next big tech interview or want to level up your JS brain, here are some tricky and mind-bending questions with real-world examples. 💡
Let’s dive deep! 🏊♂️

🔥 1. What is the result of [] + [] and why?Answer: "" (an empty string)
console.log([] + []); // ""Why?
When using + with arrays, JavaScript tries to convert both operands to strings and then concatenate them.
[].toString(); // ""So essentially it becomes: "" + "" => ""
🤯 Mind blown? It gets crazier!
🌀 2. What is the output of [1,2,3] + [4,5,6]?Answer: "1,2,34,5,6"
console.log([1,2,3] + [4,5,6]); // "1,2,34,5,6"JavaScript converts both arrays to strings:
[1,2,3].toString(); // "1,2,3"
[4,5,6].toString(); // "4,5,6"Then: "1,2,3" + "4,5,6" => "1,2,34,5,6"
📌 Pro Tip: Always double-check data types before combining!
🤖 3. What does typeof NaN return?Answer: "number"
console.log(typeof NaN); // "number"Even though NaN stands for Not a Number, it’s still considered a number type in JS.
🧠 Takeaway: Don’t rely solely on typeof for validation—use Number.isNaN().
🕳️ 4. What will be the result of this code?
let a = [1, 2, 3];
a[10] = 99;
console.log(a.length); // ?Answer: 11
Sparse arrays! JavaScript sets a[10], leaving holes (undefineds) in between.
// Array looks like:
[1, 2, 3, <7 empty items>, 99]🧨 Trap: Don’t assume sequential indexes when working with arrays.
🧊 5. Is{} + []the same as[] + {}?
console.log({} + []); // 0
console.log([] + {}); // "[object Object]"Why?
In the first case, {} is treated as a block scope and +[] becomes 0.
+[] // 0In the second case:
[] + {}
// "" + "[object Object]" => "[object Object]"📘 Lesson: Operator precedence + expression context = head-scratcher 😵
🧪 6. What is the output of console.log(0.1 + 0.2 === 0.3)?Answer: false
console.log(0.1 + 0.2 === 0.3); // falseDue to floating-point precision errors in JS:
0.1 + 0.2 = 0.30000000000000004✅ Fix: Use a precision tolerance:
Math.abs((0.1 + 0.2) - 0.3) < Number.EPSILON🪝 7. What does this return?
let foo = function() {};
console.log(foo.prototype);Answer: {}
Every function (not arrow function) has a .prototype object, used for inheritance when using new.
But arrow functions don’t have .prototype:
const bar = () => {};
console.log(bar.prototype); // undefined💡 Note: This is crucial when working with constructors and classes!
🐍 8. What will let x = (1, 2, 3); return?Answer: 3
let x = (1, 2, 3);
console.log(x); // 3Comma operator evaluates each expression but returns only the last one.
📌 Rare but useful in minified or inline expressions.
🧟 9. Why does this return 'object'?console.log(typeof null); // "object"Answer: This is a legacy bug from the early days of JS.
Internally, null was represented with a null pointer, which was 0—but the type tag system also used 0 for "object."
So…
🧠 Takeaway: Use value === null to check for null explicitly.
🔒 10. What does this return?
let a = {};
let b = { key: "b" };
let c = { key: "c" };
a[b] = 123;
a[c] = 456;
console.log(a[b]); // ??Answer: 456
🤯 Why? JS converts object keys to strings. So:
b.toString() => "[object Object]"
c.toString() => "[object Object]"So both a[b] and a[c] are actually a["[object Object]"].
📌 Fix: Use Map if you want objects as keys:
let map = new Map();
map.set(b, 123);
map.set(c, 456);
console.log(map.get(b)); // 123👀 Wrapping Up…
Mastering these tricky questions gives you a huge edge in interviews! 🏆
✅ They test:
- Deep knowledge of JavaScript internals
- Awareness of quirks and bugs
- Practical debugging mindset
Comments
Post a Comment