Why You Should Avoid Using new Number(), new String(), and new Boolean() in JavaScript In JavaScript, there is an important distinction between primitive values and object wrappers. Consider the following example: let a = 3; // primitive number let b = new Number(3); // Number object console.log(a == b); // true (type coercion) console.log(a === b); // false (different types) This inconsistency occurs because new Number(), new String(), and new Boolean() create objects, not primitive values. Although they appear similar, they can cause subtle and hard-to-detect bugs in equality checks and logical comparisons. Common Issues Confusing equality checks (== vs ===) Unintended behavior in conditionals or truthy/falsey evaluations Inconsistent data handling across the codebase Recommended Best Practices Always use literals or function calls for primitive values: // Correct usage let x = 3; let y = "Hello"; let z = true; // Safe conversions Number("3"); // → 3 (primitive) String(123); // → "123" Boolean(0); // → false Use constructors like Date, Array, Object, and Function only when you intend to create objects. For Working with Dates Instead of relying solely on the Date object, consider modern and reliable alternatives: Intl.DateTimeFormat for formatting Temporal API (in modern JavaScript runtimes) for date and time arithmetic Key Takeaway If you encounter new Number(), new String(), or new Boolean() in your codebase, it is often a sign of a potential bug. Use literals for primitives, and reserve constructors for actual objects. #JavaScript #WebDevelopment #SoftwareEngineering #ProgrammingBestPractices #CleanCode #FrontendDevelopment #NodeJS #TypeScript #Developers
Avoid new Number(), new String(), new Boolean() in JavaScript
More Relevant Posts
-
💡 Ever changed a copy of an object… and accidentally changed the original too? If you’ve worked with JavaScript, you know this painful trap all too well! Let’s clarify the difference between shallow copy and deep copy, and see how modern JS handles it. 🔹 Shallow Copy A shallow copy duplicates only the top-level properties. Nested objects or arrays are still shared. const original = { name: "Alice", details: { age: 25 } }; const shallowCopy = { ...original }; shallowCopy.details.age = 30; console.log(original.details.age); // 30 → original object changed! ✅ Top-level copied. ⚠️ Nested objects still reference the same memory. 🔹 Deep Copy A deep copy duplicates everything, including nested objects, so changes don’t affect the original. 1️⃣ Using JSON.stringify() + JSON.parse() const original = { name: "Alice", details: { age: 25 } }; const deepCopy = JSON.parse(JSON.stringify(original)); deepCopy.details.age = 30; console.log(original.details.age); // 25 → safe! ⚠️ Limitation: Doesn’t handle Dates, Maps, Sets, functions, or circular references. 2️⃣ Using structuredClone() (Modern JS) const original = { name: "Alice", details: { age: 25 } }; const deepCopy = structuredClone(original); deepCopy.details.age = 30; console.log(original.details.age); // 25 → safe! ✅ Handles most types, including Date, Map, Set, etc. ⚠️ Available in modern browsers & Node.js v17+. #JS #JavaScript #WebDevelopment #DeepCopy #ShallowCopy #CodingTips #Programming
To view or add a comment, sign in
-
Reflection & Object Composition in Modern JavaScript In JavaScript, objects don’t just store values — they can look at themselves and manipulate their own properties. That’s the power of Reflection. Reflection enables patterns like Object Composition, a clean, modern alternative to long prototype chains. Reflection in Action const john = { firstname: "John", lastname: "Doe" }; for (let prop in john) { if (john.hasOwnProperty(prop)) { console.log(prop + ": " + john[prop]); } } Output: firstname: John lastname: Doe Object Composition — the ES6+ Way Instead of relying on libraries like Lodash or Underscore, modern JS gives us built-ins: 1️⃣ Object.assign() Object.assign(john, { address: "123 Main St" }, { getFirstName() { return this.firstname; } }); 2️⃣ Spread Operator (ES2018) const extendedJohn = { ...john, address: "123 Main St", getFirstName() { return this.firstname; } }; Object.assign() → Mutates the object Spread { ...obj } → Creates a new one Why It Matters No external libraries needed Clean, readable syntax Full control over mutation or immutability 100% native and widely supported Takeaway: With ES6+, Object.assign() and the spread operator { ...obj } give you all the power of extend, natively — Reflection + Composition, the modern way. #JavaScript #ES6 #FrontendDevelopment #WebDevelopment #CleanCode #ProgrammingTips #React #TypeScript
To view or add a comment, sign in
-
Demystifying the Prototype in JavaScript If there’s one concept that confuses most developers (even experienced ones), it’s the Prototype. Unlike traditional class-based languages, JavaScript uses prototypal inheritance — meaning objects can inherit directly from other objects. Every JS object has a hidden reference called its prototype, and this is what makes inheritance possible. 🔹 How It Works When you access a property like obj.prop1: 1️⃣ JS first checks if prop1 exists on the object itself. 2️⃣ If not, it looks at the object’s prototype. 3️⃣ If still not found, it continues up the prototype chain until it either finds it or reaches the end. So sometimes a property seems to belong to your object — but it actually lives further down the chain! Example const person = { firstname: "Default", lastname: "Default", getFullName() { return this.firstname + " " + this.lastname; } }; const john = Object.create(person); john.firstname = "John"; john.lastname = "Doe"; console.log(john.getFullName()); // "John Doe" Here’s what happens: JS looks for getFullName on john. Doesn’t find it → checks person (its prototype). Executes the method with this referring to john. Key Takeaways The prototype is just a hidden reference to another object. Properties are looked up the prototype chain until found. The this keyword refers to the object calling the method, not the prototype. Avoid using __proto__ directly — use Object.create() or modern class syntax. One-liner: The prototype chain is how JavaScript lets one object access properties and methods of another — simple, flexible, and core to the language. If you found this helpful, follow me for more bite-sized explanations on JavaScript, React, and modern web development #JavaScript #WebDevelopment #Frontend #React #TypeScript #Coding #LearningInPublic #SoftwareEngineering #TechEducation #WebDevCommunity
To view or add a comment, sign in
-
JavaScript’s type coercion, truthy/falsy values, and implicit conversions can be twisted into something readable. Here's some code: (![] + [])[+[]] + ([] + {})[+!![] + [+!![]]] + ([] + {})[+!![] + [+!![]]] + (![] + [])[!+[] + !![]] + (+{} + {})[+!![] + [+[]]] + (![] + [])[+[]] + ([][[]] + [])[+[]] + ([][[]] + [])[+!![]] + (+{} + {})[+!![] + [+[]]] + ([][[]] + [])[+!![]] + ([] + {})[+!![]] +(!![] + [])[+[]] + (+{} + {})[+!![] + [+[]]] + (![] + [])[+[]] + ([] + {})[+!![] + [+!![]]] + (![] + [])[+!![]] + (!![] + [])[+!![]]; JavaScript is as quirky as it is powerful. #javascript #programming #software
To view or add a comment, sign in
-
🌐 Introduction to JavaScript JavaScript is a lightweight, interactive scripting language that comes with many built-in methods. It plays a key role alongside HTML and CSS to make webpages dynamic and engaging. 🧩 Where JavaScript Is Used JavaScript is used in web development to: Add interactivity Handle user input Communicate with servers for dynamic content 💻 Example Script // Display an alert message window.alert("This is an alert message!"); // Print output to the console console.log("Hello from JavaScript!"); ⚙️ Features of JavaScript ✅ Easy to use ⚡ Fast response time 🔁 Flexible and powerful 🚀 JIT (Just-In-Time) compiler — works as both compiler and interpreter 🧠 Common Console Methods window.alert("Alert message"); console.log("Log message"); console.warn("Warning message"); console.info("Information message"); 📘 console: A built-in JS object giving access to the browser’s debugging console. 🧩 log(), warn(), info() are methods used to print messages or information. 🧱 Objects in JavaScript Objects are collections of properties and methods. Properties (fields): Store data like strings or numbers. Methods (functions): Perform actions. ⚠️ Common JavaScript Errors 1️⃣ Syntax Errors – mistakes in code structure 2️⃣ Reference Errors – using variables not defined 3️⃣ Type Errors – invalid operations on data types 🔡 JavaScript Variables – var, let, const Variables are used to store data values. There are three ways to declare them: var, let, and const 10000 Coders #Frontend #JavaScript #LearningNewThings #WebDevelopment #Coding #Programming
To view or add a comment, sign in
-
-
🔄 JavaScript Type Conversion — Turning One Type Into Another! 😎 In JavaScript, Type Conversion means changing a value from one data type to another — for example, from a string to a number, or from a number to a string. There are two main types of conversions you should know 👇 --- ⚙️ 1. Implicit Conversion (Type Coercion) JavaScript does this automatically when needed. Example: console.log("5" + 2); // "52" → number turns into string console.log("5" - 2); // 3 → string turns into number 🧠 JS tries to “help” you by converting types automatically — but sometimes this can cause surprises! 😅 --- ⚙️ 2. Explicit Conversion (Manual Conversion) You do it yourself using functions or methods. Examples: Number("10"); // Converts string to number → 10 String(20); // Converts number to string → "20" Boolean(0); // Converts number to boolean → false ✅ More reliable because you control when and how it happens. --- 💬 Quick Tip: Use typeof to check what type your value currently is 👇 typeof "Hello" // "string" typeof 42 // "number" --- 💡 In Short: Type conversion helps your program stay flexible and smart — but always be aware of how JavaScript converts things behind the scenes! #JavaScript #CodingTips #WebDevelopment #JSBeginners #LearnJS #Frontend
To view or add a comment, sign in
-
-
Going back to basics 🌱 How Javascript executes your code inside the JS Engine ? Let’s say you have a "landing page" that needs a bit of interactivity maybe a "button click". So, you add a JavaScript file to make it all work smoothly. Now, these are are steps that will occure behind the scene - 1. The "Javascript engine" first reads your code from top to bottom, checking if there are any "syntax errors". Then it converts the code into a structured format called an "Abstract Syntax Tree (AST)" basically something the computer can understand. 2. Interpretation : This is where the Javascript engine’s interpreter (like "Ignition" in Chrome’s V8 engine) turns your code into "bytecode" for faster execution. (No need to stress about these , just know this step helps your code run faster, we will explore it more later.) 3. Optimization (JIT) : If you remember, we already discussed "Just-in-time (JIT)" Compilation in an earlier post that’s exactly what happens here. While your page is running, the Javascript engine keeps an eye on which parts of your code run frequently for example, a function that executes every time a button is clicked. When it notices such patterns, the JIT Compiler steps in and converts those parts into machine code, so the next time they run, it happens much faster. 4. Execution : Now, whenever you interact with your page like "clicking a button", the engine runs the already optimised machine code directly. That’s how things happen when you add Javascript to your page. But...but..but , if there is no Javascript file, will the JavaScript engine still work???? #Javascript #Frontend
To view or add a comment, sign in
-
-
💥 Redux Made Easy: The Simple JavaScript Concept Behind compose() If you've used Redux but want to understand the core logic behind its power? It starts with one JavaScript concept: "Composition". It was a total 💡 lightbulb moment for me. It revealed how Redux builds it's entire middleware pipeline using elegant, core JavaScript. "Composition" chains simple functions into a powerful one. Think of an assembly line: output of one becomes input for the next. 🧠 Think of it like water flowing through filters where each function cleans or transforms the data before passing it on. The compose utility in Redux is not a built-in JS function but it's a pattern typically created using reduceRight(). Why "reduceRight" ? Because it assembles functions backwards, ensuring that data flows forwards which is exactly the way a pipeline should. Short Example: List: [LogTiming function, AuthorizeUser function, RunQuery function] Problem: The RunQuery must run first, then AuthorizeUser, then LogTiming. Solution: reduceRight() builds the function chain backwards, ensuring data flows forwards through the required order: RunQuery → AuthorizeUser → LogTiming. "Real-World Example": Cleaning Data This pattern lets us process data reliably. Here's how we build compose in vanilla JS: "📸 [refer to the attached image for better understanding]" 👉 This same composition pattern is exactly what Redux uses internally for its middleware pipeline. 🔁 How Redux Uses Compose The compose pattern is essential for Redux middleware (applyMiddleware). When you list middleware (like thunk for async operations and logger for debugging), Redux uses its internal "compose" utility to wrap them into a single, cohesive processing unit. Every action flows consistently through this pipeline before hitting your reducers. Understanding reduceRight() really helps you see how Redux turns multiple features into one reliable machine. It’s just ✨ JavaScript. 💬 If you've got JavaScript concept that helped you understand a complex library better? 👇 Drop your “lightbulb moment” in the comments or DM! #Redux #JavaScript #FunctionalProgramming #WebDevelopment #React #CodingTips #ReduceRight
To view or add a comment, sign in
-
-
🔄 Mutable vs Immutable — The Real Reason Bugs Happen in JS Ever changed one variable and something else broke… even though you never touched it? 😩 That’s Mutability — the silent chaos-maker in JavaScript. Let’s decode it 👇 💥 Mutable = Changeable (and Dangerous) Mutable data types (like arrays & objects) are stored by reference, not value. So when you “copy” them, both variables point to the same memory. let user1 = { name: "Alex" }; let user2 = user1; user2.name = "Jordan"; console.log(user1.name); // "Jordan" 😱 One small change = big surprise! 💎 Immutable = Copy, Don’t Corrupt Immutable means creating a new copy instead of editing the old one. let user1 = { name: "Alex" }; let user2 = { ...user1, name: "Jordan" }; console.log(user1.name); // "Alex" ✅ Now both are safe and independent — no sneaky side effects. 🧠 Why Bugs Happen: Most JS bugs happen when you think you’re copying data but you’re just copying the reference. That’s how state, props, or API data get unexpectedly overwritten — especially in UI frameworks. ⚡ Pro Tip (for Angular Devs): Angular’s Change Detection only notices new references. If you mutate existing arrays or objects, Angular won’t re-render! Instead of this 👇 this.todos.push(newTodo); Do this 👇 this.todos = [...this.todos, newTodo]; 💡 Fresh reference = fresh UI update! 💬 Have you ever debugged a “ghost update” like this? Share your story! 👩💻 Follow for more fun JavaScript & Angular insights made simple 🔥 #JavaScript #WebDevelopment #CodingHumor #LearningJS #DevelopersLife #Frontend #TechCommunity
To view or add a comment, sign in
-
⚡ Level Up Your JS Skills: 8 Powerful Array Methods to Know Working with arrays is something we do every day as JavaScript developers.knowing how to handle them efficiently makes your code smarter and easier to maintain. Here are some powerful and useful array methods 👇 🔁 map() – Transforms each element and returns a new array. Perfect for rendering lists or transforming data. 🧹 filter() – Creates a new array with elements that meet a condition. Ideal for filtering data or removing unwanted items. ➕ reduce() – Combines array elements into a single value. Great for totals, averages, or aggregating data. 🔍 some() – Checks if at least one element meets a condition. Useful for quick validations or checks. ✅ every() – Checks if all elements meet a condition. Ensures data consistency across your array. 🔎 includes() – Checks if an array contains a value. Cleaner alternative to indexOf(). 🧩 join() – Merges all elements into a single string. Perfect for formatting text or creating CSV-style output. ✂️ splice() – Adds or removes elements directly (mutates the array). Handy for modifying arrays in place. #JavaScript #WebDevelopment #Frontend #React #TypeScript #CodingTips #CleanCode #ArrayMethods
To view or add a comment, sign in
More from this author
Explore related topics
- Clear Coding Practices for Mature Software Development
- Writing Functions That Are Easy To Read
- How Developers Use Composition in Programming
- Importance of Clear Coding Conventions in Software Development
- Simple Ways To Improve Code Quality
- How to Refactor Code Thoroughly
- How to Improve Code Maintainability and Avoid Spaghetti Code
- How to Write Clean, Error-Free Code
- How to Modify Existing Code Confidently
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development