<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anthony Bañon Arias</title>
    <description>The latest articles on DEV Community by Anthony Bañon Arias (@anthonybanion).</description>
    <link>https://dev.to/anthonybanion</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3022885%2F8d15c0e5-e0ba-4d68-a814-b1ce29d06780.jpg</url>
      <title>DEV Community: Anthony Bañon Arias</title>
      <link>https://dev.to/anthonybanion</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anthonybanion"/>
    <language>en</language>
    <item>
      <title>Universal Naming Conventions for Multi-Language Projects</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Tue, 21 Oct 2025 23:53:36 +0000</pubDate>
      <link>https://dev.to/anthonybanion/universal-naming-conventions-for-multi-language-projects-47mi</link>
      <guid>https://dev.to/anthonybanion/universal-naming-conventions-for-multi-language-projects-47mi</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When your stack includes multiple programming languages and frameworks,naming can quickly become chaos.&lt;/p&gt;

&lt;p&gt;Each language has its own style:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python uses snake_case,&lt;/li&gt;
&lt;li&gt;Java prefers camelCase,&lt;/li&gt;
&lt;li&gt;React components love PascalCase,&lt;/li&gt;
&lt;li&gt;and databases often go for lower_snake_case.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In large or polyglot projects, switching conventions constantly becomes a mental tax and a source of subtle bugs.&lt;/p&gt;

&lt;p&gt;This post proposes a unified, language-agnostic naming convention system — inspired by &lt;a href="https://peps.python.org/pep-0008/" rel="noopener noreferrer"&gt;PEP 8&lt;/a&gt; (Python), &lt;a href="https://www.oracle.com/java/technologies/javase/codeconventions-namingconventions.html" rel="noopener noreferrer"&gt;Java Code Conventions&lt;/a&gt; and &lt;a href="https://google.github.io/styleguide/" rel="noopener noreferrer"&gt;Google Style Guides&lt;/a&gt; — to keep every part of your codebase consistent, no matter the language or framework.&lt;/p&gt;




&lt;h2&gt;
  
  
  General Naming Principles
&lt;/h2&gt;

&lt;p&gt;Before applying specific conventions, keep these universal principles in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Be consistent:&lt;/strong&gt; The same idea should always have the same name pattern.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be descriptive:&lt;/strong&gt; Names should reveal intent, not just data type.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid abbreviations:&lt;/strong&gt; Prefer &lt;code&gt;userProfile&lt;/code&gt; over &lt;code&gt;usrProf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid noise words:&lt;/strong&gt; Skip redundant suffixes like &lt;code&gt;ManagerClass&lt;/code&gt;, &lt;code&gt;HelperUtil&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use singular nouns for class names&lt;/strong&gt; (&lt;code&gt;User&lt;/code&gt;, not &lt;code&gt;Users&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use verbs for functions or methods&lt;/strong&gt; (&lt;code&gt;calculateTotal()&lt;/code&gt;, &lt;code&gt;fetchUser()&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer clarity over cleverness:&lt;/strong&gt; Future you (or another dev) should understand it instantly.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Unified Naming Convention Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Context&lt;/th&gt;
&lt;th&gt;Convention&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Notes / Applies To&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Project / Repository&lt;/td&gt;
&lt;td&gt;kebab-case&lt;/td&gt;
&lt;td&gt;clothing-store, user-auth-service&lt;/td&gt;
&lt;td&gt;Common across GitHub, Docker, CI/CD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Folders&lt;/td&gt;
&lt;td&gt;snake_case&lt;/td&gt;
&lt;td&gt;clothing_store, shop_lite&lt;/td&gt;
&lt;td&gt;Lowercase only, use _ for spaces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Files&lt;/td&gt;
&lt;td&gt;camelCase&lt;/td&gt;
&lt;td&gt;userController.py, dataModel.c&lt;/td&gt;
&lt;td&gt;Follow Google C++ Style&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Classes / Components&lt;/td&gt;
&lt;td&gt;PascalCase&lt;/td&gt;
&lt;td&gt;UserController, ProductCard, OrderService&lt;/td&gt;
&lt;td&gt;Used in Java, JS, C#, Python classes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Variables / Functions&lt;/td&gt;
&lt;td&gt;camelCase&lt;/td&gt;
&lt;td&gt;getUserOrders, calculateTotal&lt;/td&gt;
&lt;td&gt;Standard in JS, Java, C#, PHP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constants&lt;/td&gt;
&lt;td&gt;UPPER_SNAKE_CASE&lt;/td&gt;
&lt;td&gt;MAX_RETRIES, DEFAULT_TIMEOUT&lt;/td&gt;
&lt;td&gt;For values that should not change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database Tables / Collections&lt;/td&gt;
&lt;td&gt;snake_case plural&lt;/td&gt;
&lt;td&gt;users, order_items, product_reviews&lt;/td&gt;
&lt;td&gt;Consistent in SQL and NoSQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database Fields / Columns&lt;/td&gt;
&lt;td&gt;snake_case  singular&lt;/td&gt;
&lt;td&gt;first_name, created_at&lt;/td&gt;
&lt;td&gt;Never use camelCase in DB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Endpoints (REST)&lt;/td&gt;
&lt;td&gt;kebab-case&lt;/td&gt;
&lt;td&gt;/api/v1/user-orders&lt;/td&gt;
&lt;td&gt;Lowercase, hyphen-separated paths&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Environment Variables&lt;/td&gt;
&lt;td&gt;UPPER_SNAKE_CASE&lt;/td&gt;
&lt;td&gt;DATABASE_URL, JWT_SECRET&lt;/td&gt;
&lt;td&gt;Universal across .env files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git Branches&lt;/td&gt;
&lt;td&gt;kebab-case with prefix&lt;/td&gt;
&lt;td&gt;feature/add-auth, fix/login-bug&lt;/td&gt;
&lt;td&gt;No spaces, accents, or uppercase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker Services&lt;/td&gt;
&lt;td&gt;snake_case&lt;/td&gt;
&lt;td&gt;web_app, mongo_db, redis_cache&lt;/td&gt;
&lt;td&gt;Works across YAML and Compose&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration Files&lt;/td&gt;
&lt;td&gt;lowercase&lt;/td&gt;
&lt;td&gt;.env, docker-compose.yml, package.json&lt;/td&gt;
&lt;td&gt;Standard convention across tools&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Consistency is the invisible architecture that makes a project feel professional.&lt;br&gt;&lt;br&gt;
When every file, class, and variable follows a shared logic — switching between Java, Python, or JavaScript feels effortless.  &lt;/p&gt;

&lt;p&gt;Adopting a unified naming convention isn't about rigidity; it's about freeing your brain to focus on solving problems, not remembering whether it was &lt;code&gt;UserService&lt;/code&gt; or &lt;code&gt;user_service&lt;/code&gt;.  &lt;/p&gt;

&lt;p&gt;Build once, name forever.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://peps.python.org/pep-0008/" rel="noopener noreferrer"&gt;Python PEP 8 – Style Guide for Python Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.oracle.com/java/technologies/javase/codeconventions-namingconventions.html" rel="noopener noreferrer"&gt;Java Code Conventions (Oracle)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://google.github.io/styleguide/" rel="noopener noreferrer"&gt;Google Style Guides (C++, Python, JS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/airbnb/javascript" rel="noopener noreferrer"&gt;Airbnb JavaScript Style Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/" rel="noopener noreferrer"&gt;Django Coding Style&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cleancode</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>SQL Commands Guide</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:50:34 +0000</pubDate>
      <link>https://dev.to/anthonybanion/sql-commands-guide-1f4c</link>
      <guid>https://dev.to/anthonybanion/sql-commands-guide-1f4c</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Structured Query Language (SQL) is the standard language used to manage relational databases.&lt;br&gt;&lt;br&gt;
It allows us to &lt;strong&gt;create, manipulate, and secure&lt;/strong&gt; data efficiently, regardless of the database system (MySQL, MariaDB, PostgreSQL, SQLite, Oracle, etc.).&lt;/p&gt;

&lt;p&gt;This post summarizes the &lt;strong&gt;main components of SQL&lt;/strong&gt; and their most important commands.&lt;br&gt;&lt;br&gt;
Each section includes the &lt;strong&gt;type of command&lt;/strong&gt;, &lt;strong&gt;syntax&lt;/strong&gt;, and &lt;strong&gt;a concise description&lt;/strong&gt;, serving as a quick reference or learning manual.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Data Definition Language (DDL)
&lt;/h2&gt;

&lt;p&gt;DDL is used to &lt;strong&gt;define and modify the structure&lt;/strong&gt; of database objects such as tables, schemas, and views.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CREATE DATABASE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CREATE DATABASE database_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates a new database.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CREATE TABLE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CREATE TABLE table_name (column_name data_type, ...);&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines a new table with specified columns and data types.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ALTER TABLE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;`ALTER TABLE table_name ADD&lt;/td&gt;
&lt;td&gt;DROP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;{% raw %}&lt;code&gt;DROP TABLE&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DROP TABLE table_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Permanently deletes a table and its data.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TRUNCATE TABLE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;TRUNCATE TABLE table_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deletes all data from a table but keeps its structure.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;RENAME TABLE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;RENAME TABLE old_name TO new_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Renames a table.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CREATE INDEX&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CREATE INDEX index_name ON table_name (column_name);&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates an index to improve query performance.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;DROP INDEX&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DROP INDEX index_name ON table_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deletes an index.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧮 Data Manipulation Language (DML)
&lt;/h2&gt;

&lt;p&gt;DML is used to &lt;strong&gt;insert, update, delete, and retrieve&lt;/strong&gt; data from database tables.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢 SELECT — Retrieve Data
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Select all columns&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT * FROM table_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Retrieves all data from a table.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Select specific columns&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT column1, column2 FROM table_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Retrieves specific columns.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With condition&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT * FROM table_name WHERE column = value;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Filters rows based on a condition.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With multiple conditions&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT * FROM table_name WHERE col1='x' AND col2&amp;gt;10;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Uses logical operators (&lt;code&gt;AND&lt;/code&gt;, &lt;code&gt;OR&lt;/code&gt;, &lt;code&gt;NOT&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With sorting&lt;/td&gt;
&lt;td&gt;`SELECT * FROM table_name ORDER BY column ASC&lt;/td&gt;
&lt;td&gt;DESC;`&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With grouping&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT column, COUNT(*) FROM table_name GROUP BY column;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Groups results for aggregation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With limit&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SELECT * FROM table_name LIMIT 10;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Restricts the number of returned rows.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  🟠 INSERT — Add Data
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Insert all columns&lt;/td&gt;
&lt;td&gt;&lt;code&gt;INSERT INTO table_name VALUES (value1, value2, ...);&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inserts data into all columns in order.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Insert specific columns&lt;/td&gt;
&lt;td&gt;&lt;code&gt;INSERT INTO table_name (col1, col2) VALUES (val1, val2);&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inserts data into specific columns.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Insert multiple rows&lt;/td&gt;
&lt;td&gt;&lt;code&gt;INSERT INTO table_name (col1, col2) VALUES (v1, v2), (v3, v4);&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inserts multiple rows at once.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  🔵 UPDATE — Modify Data
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic update&lt;/td&gt;
&lt;td&gt;&lt;code&gt;UPDATE table_name SET column=value;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Updates all rows in a table.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conditional update&lt;/td&gt;
&lt;td&gt;&lt;code&gt;UPDATE table_name SET column=value WHERE condition;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Updates only rows that match the condition.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multiple columns&lt;/td&gt;
&lt;td&gt;&lt;code&gt;UPDATE table_name SET col1=val1, col2=val2 WHERE id=1;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Updates several columns simultaneously.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  🔴 DELETE — Remove Data
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Delete all rows&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DELETE FROM table_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes all data from the table.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conditional delete&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DELETE FROM table_name WHERE condition;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes rows that meet the condition.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  👁️ View Definition
&lt;/h2&gt;

&lt;p&gt;Views are &lt;strong&gt;virtual tables&lt;/strong&gt; based on the result of a query.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Create a view&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CREATE VIEW view_name AS SELECT column1, column2 FROM table_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines a view to simplify queries.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modify a view&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ALTER VIEW view_name AS SELECT ...;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Changes the view definition.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete a view&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DROP VIEW view_name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes a view from the database.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔄 Transaction Control
&lt;/h2&gt;

&lt;p&gt;Transactions ensure &lt;strong&gt;data integrity&lt;/strong&gt; by grouping operations into atomic units.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Start transaction&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;BEGIN;&lt;/code&gt; or &lt;code&gt;START TRANSACTION;&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Begins a new transaction block.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commit transaction&lt;/td&gt;
&lt;td&gt;&lt;code&gt;COMMIT;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Saves all operations within the transaction.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rollback transaction&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ROLLBACK;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cancels the transaction and reverts changes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Savepoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SAVEPOINT name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates a point within a transaction to roll back to.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rollback to savepoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ROLLBACK TO SAVEPOINT name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Undoes operations back to a savepoint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release savepoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;RELEASE SAVEPOINT name;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deletes a savepoint marker.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧱 Integrity Constraints
&lt;/h2&gt;

&lt;p&gt;Constraints ensure &lt;strong&gt;data validity and consistency&lt;/strong&gt; within the database.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary key&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PRIMARY KEY (column_name)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ensures unique and non-null values per row.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foreign key&lt;/td&gt;
&lt;td&gt;&lt;code&gt;FOREIGN KEY (col) REFERENCES other_table(col)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enforces referential integrity between tables.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unique&lt;/td&gt;
&lt;td&gt;&lt;code&gt;UNIQUE (column_name)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prevents duplicate values.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Not null&lt;/td&gt;
&lt;td&gt;&lt;code&gt;column_name data_type NOT NULL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Disallows empty (NULL) values.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Check&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CHECK (condition)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Validates data against a logical condition.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;&lt;code&gt;column_name data_type DEFAULT value&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets a default value for a column.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔐 Authorization and Security
&lt;/h2&gt;

&lt;p&gt;Defines &lt;strong&gt;access permissions&lt;/strong&gt; for users and roles.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Create user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CREATE USER 'username'@'host' IDENTIFIED BY 'password';&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates a new user account.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grant privilege&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GRANT privilege ON database.table TO 'username'@'host';&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gives permissions (e.g., SELECT, INSERT).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revoke privilege&lt;/td&gt;
&lt;td&gt;&lt;code&gt;REVOKE privilege ON database.table FROM 'username'@'host';&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes permissions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Drop user&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DROP USER 'username'@'host';&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deletes a user.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Show privileges&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SHOW GRANTS FOR 'username'@'host';&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Displays granted permissions.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  💬 Embedded and Dynamic SQL
&lt;/h2&gt;

&lt;p&gt;Used to &lt;strong&gt;integrate SQL into programming languages&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Syntax&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Embedded SQL&lt;/td&gt;
&lt;td&gt;&lt;code&gt;EXEC SQL statement;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SQL written directly inside host language code.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dynamic SQL&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PREPARE stmt FROM 'SQL statement'; EXECUTE stmt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Builds and executes SQL statements dynamically at runtime.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🏁 Conclusion
&lt;/h2&gt;

&lt;p&gt;SQL is a vast language that unifies the way databases are created, manipulated, and secured.&lt;br&gt;&lt;br&gt;
By understanding its main components — DDL, DML, Views, Transactions, Integrity, Authorization, and Embedded SQL — developers can efficiently design robust and scalable database systems.&lt;/p&gt;

&lt;p&gt;This guide serves as a &lt;strong&gt;complete quick reference&lt;/strong&gt; to keep at hand while coding or learning database management.&lt;br&gt;&lt;br&gt;
Master these commands step by step, and you’ll have the foundation of nearly every relational database in the world.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>database</category>
      <category>mysql</category>
      <category>programming</category>
    </item>
    <item>
      <title>Understanding Web Rendering Strategies</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Wed, 10 Sep 2025 00:15:03 +0000</pubDate>
      <link>https://dev.to/anthonybanion/understanding-web-rendering-strategies-2j56</link>
      <guid>https://dev.to/anthonybanion/understanding-web-rendering-strategies-2j56</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;When building modern web applications, one of the most critical decisions is how to render your content. For years, the conversation revolved mainly around SSR (Server-Side Rendering) vs CSR (Client-Side Rendering). But today, the ecosystem is much richer: we also have SSG, ISR, Hydration, Streaming, Edge Rendering, and Hybrid approaches.&lt;/p&gt;

&lt;p&gt;In this article, we’ll break down the main rendering strategies, explore their differences, and compare their pros and cons.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rendering Strategies Overview
&lt;/h2&gt;

&lt;p&gt;Here’s a comparison of the most common rendering strategies used in web development:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;How it works&lt;/th&gt;
&lt;th&gt;Example Frameworks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SSR (Server-Side Rendering)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Render on the server&lt;/td&gt;
&lt;td&gt;Server generates full HTML with data and sends it to the browser on each request.&lt;/td&gt;
&lt;td&gt;Django, Symfony (Twig), Laravel (Blade), EJS, Next.js (SSR mode)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CSR (Client-Side Rendering)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Render in the client&lt;/td&gt;
&lt;td&gt;Server sends almost empty HTML + JS. Browser builds the UI entirely.&lt;/td&gt;
&lt;td&gt;React, Angular, Vue (SPA mode)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SSG (Static Site Generation)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pre-rendered static&lt;/td&gt;
&lt;td&gt;Pages are pre-built into static HTML at build time. Server just serves files.&lt;/td&gt;
&lt;td&gt;Next.js (SSG), Gatsby, Hugo, Jekyll&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ISR (Incremental Static Regeneration)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Regeneration on demand&lt;/td&gt;
&lt;td&gt;Like SSG but pages can be regenerated in the background when data changes.&lt;/td&gt;
&lt;td&gt;Next.js (with revalidate)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hydration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Adding interactivity&lt;/td&gt;
&lt;td&gt;Server delivers HTML (SSR/SSG), then client injects interactivity with JS.&lt;/td&gt;
&lt;td&gt;React SSR + hydration, Vue SSR, SvelteKit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Streaming SSR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Progressive rendering&lt;/td&gt;
&lt;td&gt;Server streams parts of HTML progressively for faster perceived load.&lt;/td&gt;
&lt;td&gt;React 18 streaming, Angular Universal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Isomorphic / Universal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Shared client &amp;amp; server code&lt;/td&gt;
&lt;td&gt;Same app runs both server-side and client-side.&lt;/td&gt;
&lt;td&gt;Next.js, Nuxt.js, Remix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MPA (Multi-Page Application)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Classic multipage&lt;/td&gt;
&lt;td&gt;Each route is a new page rendered on the server.&lt;/td&gt;
&lt;td&gt;Django, Symfony, Laravel (traditional)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SPA (Single-Page Application)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One-page web app&lt;/td&gt;
&lt;td&gt;Single HTML loads once, internal navigation handled client-side.&lt;/td&gt;
&lt;td&gt;React SPA, Angular SPA, Vue SPA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Edge Rendering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Render at the edge&lt;/td&gt;
&lt;td&gt;HTML is rendered at CDN/Edge servers closer to the user.&lt;/td&gt;
&lt;td&gt;Next.js on Vercel Edge, Cloudflare Pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hybrid Rendering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mix of approaches&lt;/td&gt;
&lt;td&gt;Some pages use SSR, others SSG, others CSR.&lt;/td&gt;
&lt;td&gt;Next.js, Nuxt.js, Remix&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Pros &amp;amp; Cons of Each Strategy
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;Advantages&lt;/th&gt;
&lt;th&gt;Disadvantages&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SSR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SEO-friendly, fast first load, dynamic data&lt;/td&gt;
&lt;td&gt;Higher server load, slower navigation (full reloads)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CSR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rich interactivity, fast navigation, feels like an app&lt;/td&gt;
&lt;td&gt;Poor initial SEO (without prerendering), slower first load&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SSG&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Super fast (CDN-ready), cheap hosting, great SEO&lt;/td&gt;
&lt;td&gt;Build times increase with content size, not ideal for frequently changing data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ISR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Best of SSG + dynamic updates, scalable&lt;/td&gt;
&lt;td&gt;Requires CDN/infra support, slightly more complex setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hydration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Great balance: SEO + interactivity&lt;/td&gt;
&lt;td&gt;Can cause large JS bundles and slower hydration time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Streaming SSR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Faster perceived load, good for big pages&lt;/td&gt;
&lt;td&gt;Still relatively new, more complex implementation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Isomorphic / Universal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Code reuse across server/client, flexible&lt;/td&gt;
&lt;td&gt;More complexity in build and architecture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MPA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simple, traditional, SEO-friendly&lt;/td&gt;
&lt;td&gt;Full page reloads, less “app-like”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SPA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Smooth UX, fast client navigation&lt;/td&gt;
&lt;td&gt;SEO issues (unless SSR/SSG), slower first paint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Edge Rendering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Extremely fast (close to user), scalable&lt;/td&gt;
&lt;td&gt;Vendor lock-in (depends on provider), still maturing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hybrid Rendering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Flexibility: choose best per route&lt;/td&gt;
&lt;td&gt;More setup complexity, harder to maintain&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Modern web development goes far beyond the old SSR vs CSR debate. Developers now have a spectrum of rendering strategies to choose from, depending on project requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Need SEO + fast load? → SSR, SSG, or Hybrid&lt;/li&gt;
&lt;li&gt;Need high interactivity? → CSR or SPA&lt;/li&gt;
&lt;li&gt;Need scalability? → ISR or Edge Rendering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most modern frameworks like Next.js, Nuxt.js, and Remix adopt a hybrid approach, allowing you to mix and match SSR, CSR, and SSG per route. This flexibility is why hybrid rendering is quickly becoming the standard for modern apps.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Checking `null`, `undefined`, Empty, and Falsy Values in JavaScript</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Sun, 17 Aug 2025 19:52:32 +0000</pubDate>
      <link>https://dev.to/anthonybanion/checking-null-undefined-empty-and-falsy-values-in-javascript-2io5</link>
      <guid>https://dev.to/anthonybanion/checking-null-undefined-empty-and-falsy-values-in-javascript-2io5</guid>
      <description>&lt;h2&gt;
  
  
  🔹 Introduction
&lt;/h2&gt;

&lt;p&gt;If you have written JavaScript for a while, you’ve surely faced one of the most common challenges:&lt;br&gt;&lt;br&gt;
👉 distinguishing between &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;undefined&lt;/code&gt;, empty strings, zero, or other "falsy" values.  &lt;/p&gt;

&lt;p&gt;It can be confusing, since JavaScript has its own truthy/falsy evaluation system. Sometimes you only need to check whether a variable exists, but in other cases you must know whether it is specifically &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;undefined&lt;/code&gt;, &lt;code&gt;""&lt;/code&gt;, or even an empty object or array.  &lt;/p&gt;

&lt;p&gt;This article provides a &lt;strong&gt;comprehensive cheatsheet&lt;/strong&gt; to cover all these scenarios, with explanations, code snippets, and practical use cases. Save it as your personal reference when debugging or writing clean conditions in JavaScript.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔹 General Concept: Truthy vs Falsy
&lt;/h2&gt;

&lt;p&gt;In JavaScript, values are evaluated in Boolean contexts as either &lt;strong&gt;truthy&lt;/strong&gt; or &lt;strong&gt;falsy&lt;/strong&gt;.  &lt;/p&gt;
&lt;h3&gt;
  
  
  ✅ Falsy values (evaluate to &lt;code&gt;false&lt;/code&gt;):
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;false&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;0&lt;/code&gt;, &lt;code&gt;-0&lt;/code&gt;, &lt;code&gt;0n&lt;/code&gt; (BigInt zero)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;""&lt;/code&gt; (empty string)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;null&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;undefined&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NaN&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything else is considered &lt;strong&gt;truthy&lt;/strong&gt; (including &lt;code&gt;"0"&lt;/code&gt;, &lt;code&gt;"false"&lt;/code&gt;, &lt;code&gt;[]&lt;/code&gt;, &lt;code&gt;{}&lt;/code&gt;, etc.).&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0 is falsy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;       &lt;span class="c1"&gt;// ✅&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Empty string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;    &lt;span class="c1"&gt;// ✅&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Null is falsy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// ✅&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Cheatsheet: Common Checks
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Check&lt;/th&gt;
&lt;th&gt;Code&lt;/th&gt;
&lt;th&gt;What it validates&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Falsy in general&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (!x)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;null&lt;/code&gt;, &lt;code&gt;undefined&lt;/code&gt;, &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;""&lt;/code&gt;, &lt;code&gt;NaN&lt;/code&gt;, &lt;code&gt;false&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Is defined&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (x !== undefined)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ensures &lt;code&gt;x&lt;/code&gt; is not &lt;code&gt;undefined&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Is null&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (x === null)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Only &lt;code&gt;null&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Is null or undefined&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (x == null)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;True for both &lt;code&gt;null&lt;/code&gt; and &lt;code&gt;undefined&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Is NOT null/undefined&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (x != null)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Means &lt;code&gt;x&lt;/code&gt; has a real value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Empty string&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (x === "")&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;String with length &lt;code&gt;0&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Non-empty string&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (typeof x === "string" &amp;amp;&amp;amp; x.trim() !== "")&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ensures it’s a meaningful string&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Valid number&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (!isNaN(x))&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Not &lt;code&gt;NaN&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Empty array&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (Array.isArray(x) &amp;amp;&amp;amp; x.length === 0)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Array with no elements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Non-empty array&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (Array.isArray(x) &amp;amp;&amp;amp; x.length &amp;gt; 0)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Array with elements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Empty object&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (x &amp;amp;&amp;amp; Object.keys(x).length === 0)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Object without properties&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Non-empty object&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;if (x &amp;amp;&amp;amp; Object.keys(x).length &amp;gt; 0)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Object with properties&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Use Cases and Examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Checking if a variable has any value
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User is either null or undefined&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Avoiding errors with optional values
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;API Key is set:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Detecting empty input
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Please provide a value&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Validating arrays
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isArray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;The list is empty&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Ensuring an object has properties
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;settings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;settings&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Settings object is empty&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Use &lt;code&gt;== null&lt;/code&gt; when you want to catch both null and undefined.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Null or undefined&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Use &lt;code&gt;=== null&lt;/code&gt; or &lt;code&gt;=== undefined&lt;/code&gt; when you want strict checks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always check type + content for strings and arrays &lt;code&gt;(typeof x === "string" &amp;amp;&amp;amp; x.trim() !== "")&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use &lt;code&gt;Array.isArray()&lt;/code&gt; instead of &lt;code&gt;instanceof&lt;/code&gt; Array for reliability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For objects, combine truthiness and &lt;code&gt;Object.keys(obj).length&lt;/code&gt; to ensure they are not empty.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Dealing with null, undefined, empty strings, or falsy values is part of everyday JavaScript coding. The key is knowing when to use general falsy checks (if (!x)) versus specific conditions (x === null, Array.isArray(x), etc.).&lt;/p&gt;

&lt;p&gt;With this cheatsheet, you’ll avoid common pitfalls and write cleaner, more robust conditions. Bookmark this article or keep it handy as a quick reference for your next JavaScript project. 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 References:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Falsy" rel="noopener noreferrer"&gt;MDN Web Docs - Falsy&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Equality_comparisons_and_sameness" rel="noopener noreferrer"&gt;MDN Web Docs - Equality comparisons&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_objects" rel="noopener noreferrer"&gt;MDN Web Docs - Working with objects&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>JavaScript Arrays</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Sun, 17 Aug 2025 16:32:45 +0000</pubDate>
      <link>https://dev.to/anthonybanion/javascript-arrays-4h94</link>
      <guid>https://dev.to/anthonybanion/javascript-arrays-4h94</guid>
      <description>&lt;h1&gt;
  
  
  🔢 JavaScript Arrays: The Complete Guide to Methods
&lt;/h1&gt;

&lt;p&gt;Arrays are one of the most fundamental data structures in JavaScript.&lt;br&gt;&lt;br&gt;
Whether you are working with lists, collections of objects, or results from an API, mastering &lt;code&gt;Array&lt;/code&gt; methods will make your code cleaner, faster, and easier to maintain.  &lt;/p&gt;

&lt;p&gt;In this article, we’ll go through &lt;strong&gt;all major &lt;code&gt;Array&lt;/code&gt; methods&lt;/strong&gt;, group them by functionality, and show examples you can use right away.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔗 Reference: &lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array" rel="noopener noreferrer"&gt;MDN Web Docs – Array&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  📦 Why Arrays Matter
&lt;/h2&gt;

&lt;p&gt;An array in JavaScript is an &lt;strong&gt;ordered list&lt;/strong&gt; of values.&lt;br&gt;&lt;br&gt;
Arrays can hold numbers, strings, objects, or even other arrays.&lt;br&gt;&lt;br&gt;
They also come with a &lt;strong&gt;rich set of built-in methods&lt;/strong&gt; that allow you to add, remove, transform, search, and iterate over data.  &lt;/p&gt;


&lt;h2&gt;
  
  
  🔤 Array Methods by Category
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. 🔄 Adding and Removing Elements
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;push()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Add element(s) to the end&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2].push(3) // [1,2,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pop()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Remove last element&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].pop() // [1,2]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;unshift()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Add element(s) to the start&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[2,3].unshift(1) // [1,2,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;shift()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Remove first element&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].shift() // [2,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;splice(start, deleteCount, ...items)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Add/remove/replace elements&lt;/td&gt;
&lt;td&gt;&lt;code&gt;arr.splice(1,1,"x")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  2. 🔍 Searching &amp;amp; Checking
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;indexOf()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;First index of a value&lt;/td&gt;
&lt;td&gt;&lt;code&gt;["a","b"].indexOf("b") // 1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lastIndexOf()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Last index of a value&lt;/td&gt;
&lt;td&gt;&lt;code&gt;["a","b","a"].lastIndexOf("a") // 2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;includes()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if value exists&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].includes(2) // true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;find(fn)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;First element matching condition&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].find(x=&amp;gt;x&amp;gt;1) // 2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;findIndex(fn)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Index of first match&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].findIndex(x=&amp;gt;x&amp;gt;1) // 1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;some(fn)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;At least one passes test&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].some(x=&amp;gt;x&amp;gt;2) // true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;every(fn)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All elements pass test&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].every(x=&amp;gt;x&amp;gt;0) // true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  3. 🔁 Iteration
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;forEach(fn)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs function for each element&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].forEach(x=&amp;gt;console.log(x))&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;map(fn)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates new array with mapped values&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].map(x=&amp;gt;x*2) // [2,4,6]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;filter(fn)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Keeps elements that match condition&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].filter(x=&amp;gt;x&amp;gt;1) // [2,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reduce(fn, init)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Accumulate values left → right&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].reduce((a,b)=&amp;gt;a+b,0) // 6&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reduceRight(fn, init)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Accumulate right → left&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].reduceRight((a,b)=&amp;gt;a-b) // 0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;flatMap(fn)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Map + flatten one level&lt;/td&gt;
&lt;td&gt;&lt;code&gt;["a b","c"].flatMap(x=&amp;gt;x.split(" ")) // ["a","b","c"]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  4. 📐 Sorting &amp;amp; Rearranging
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sort(fn?)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sorts array in-place&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[3,1,2].sort() // [1,2,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reverse()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reverses order&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].reverse() // [3,2,1]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  5. ✂️ Slicing &amp;amp; Copying
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;slice(start?, end?)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns shallow copy of part&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].slice(1) // [2,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;concat()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Merges arrays&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2].concat([3]) // [1,2,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;flat(depth)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Flattens nested arrays&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,[2,[3]]].flat(2) // [1,2,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;copyWithin(target, start, end?)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Copies elements within array&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3,4].copyWithin(0,2) // [3,4,3,4]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fill(value, start?, end?)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fills with value&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].fill(0) // [0,0,0]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;toSpliced()&lt;/code&gt; &lt;em&gt;(ES2023)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;Immutable version of splice&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].toSpliced(1,1) // [1,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  6. 📏 Information &amp;amp; Conversion
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt; (property)&lt;/td&gt;
&lt;td&gt;Number of items&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].length // 3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;join(sep)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Converts to string with separator&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].join("-") // "1-2-3"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;toString()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Default string conversion&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[1,2,3].toString() // "1,2,3"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;toLocaleString()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Localized string&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[123456].toLocaleString("de-DE")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Array.isArray(val)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if value is an array&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Array.isArray([]) // true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Array.from(iterable)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates array from iterable&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Array.from("abc") // ["a","b","c"]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Array.of(...items)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates array from arguments&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Array.of(1,2,3) // [1,2,3]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  🧑‍💻 Practical Example
&lt;/h2&gt;

&lt;p&gt;Let’s bring all this together in a small script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// =====================&lt;/span&gt;
&lt;span class="c1"&gt;// 🔤 Array Methods Demo&lt;/span&gt;
&lt;span class="c1"&gt;// =====================&lt;/span&gt;

&lt;span class="c1"&gt;// 1. 🔄 Adding and Removing Elements&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Adds element to the end -&amp;gt; [1, 2, 3]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;push:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Removes last element -&amp;gt; [1, 2]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pop:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;unshift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Adds element to the beginning -&amp;gt; [0, 1, 2]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;unshift:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Removes first element -&amp;gt; [1, 2]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;shift:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;splice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Removes 1 element at index 1, inserts "x" -&amp;gt; [1, "x"]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;splice:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// ----------------------------------&lt;/span&gt;

&lt;span class="c1"&gt;// 2. 🔍 Searching &amp;amp; Checking&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;indexOf:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;indexOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// First index of 2 -&amp;gt; 1&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lastIndexOf:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lastIndexOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Last index of 2 -&amp;gt; 3&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;includes:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// true, because 3 exists&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;find:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Finds first &amp;gt; 2 -&amp;gt; 3&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;findIndex:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findIndex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Index of first &amp;gt; 2 -&amp;gt; 2&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;some:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;some&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// false, no element &amp;gt; 3&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;every:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;every&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// true, all positive&lt;/span&gt;

&lt;span class="c1"&gt;// ----------------------------------&lt;/span&gt;

&lt;span class="c1"&gt;// 3. 🔁 Iteration&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nx"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;forEach element:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Logs each element&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;doubled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Creates [2,4,6]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;map:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;doubled&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;filtered&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Keeps [2,3]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;filter:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;filtered&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Adds all -&amp;gt; 6&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;reduce:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;reduceR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduceRight&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Right to left ((3-2)-1) -&amp;gt; 0&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;reduceRight:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reduceR&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;flatMapped&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;a b&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;flatMap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Split and flatten -&amp;gt; ["a","b","c"]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flatMap:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;flatMapped&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// ----------------------------------&lt;/span&gt;

&lt;span class="c1"&gt;// 4. 📐 Sorting &amp;amp; Rearranging&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;sortArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;sortArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Sorts ascending -&amp;gt; [1,2,3]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sort:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sortArr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;sortArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reverse&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Reverses -&amp;gt; [3,2,1]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;reverse:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sortArr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// ----------------------------------&lt;/span&gt;

&lt;span class="c1"&gt;// 5. ✂️ Slicing &amp;amp; Copying&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;copyArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;slice:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;copyArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// [2,3]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;concat:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// [1,2,3,4]&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;flatArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]]].&lt;/span&gt;&lt;span class="nf"&gt;flat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Flattens nested arrays -&amp;gt; [1,2,3]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flat:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;flatArr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;copyWithin:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;copyWithin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// [3,4,3,4]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fill:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;fill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// [0,0,0]&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;toSpliced:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;toSpliced&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// New array [1,3]&lt;/span&gt;

&lt;span class="c1"&gt;// ----------------------------------&lt;/span&gt;

&lt;span class="c1"&gt;// 6. 📏 Information &amp;amp; Conversion&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;infoArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;length:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;infoArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 3&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;join:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;infoArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;-&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// "1-2-3"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;toString:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;infoArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// "1,2,3"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;toLocaleString:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;123456&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;de-DE&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// "123.456"&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Array.isArray:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isArray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;infoArr&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Array.from:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;abc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// ["a","b","c"]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Array.of:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// [1,2,3]&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📌 Conclusion
&lt;/h2&gt;

&lt;p&gt;JavaScript arrays are more than just lists — they are powerful tools with dozens of built-in methods.&lt;br&gt;
By mastering these methods, you can:&lt;/p&gt;

&lt;p&gt;Manipulate collections safely&lt;/p&gt;

&lt;p&gt;Transform and filter data efficiently&lt;/p&gt;

&lt;p&gt;Write more expressive and functional code&lt;/p&gt;

&lt;p&gt;Whether you’re building small scripts or large-scale applications, knowing when and how to use these methods will save you time and reduce bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mozilla Developer Network. (n.d.). Array - JavaScript | MDN.
Retrieved August 2025, from &lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array" rel="noopener noreferrer"&gt;https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>arrays</category>
    </item>
    <item>
      <title>`Object` Methods</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Sun, 17 Aug 2025 15:02:56 +0000</pubDate>
      <link>https://dev.to/anthonybanion/object-methods-5b4b</link>
      <guid>https://dev.to/anthonybanion/object-methods-5b4b</guid>
      <description>&lt;h1&gt;
  
  
  📦 JavaScript &lt;code&gt;Object&lt;/code&gt; Methods: A Complete Guide
&lt;/h1&gt;

&lt;p&gt;Working with objects is at the heart of JavaScript programming.&lt;br&gt;&lt;br&gt;
Whether you are building classes, handling API responses, or manipulating data structures, knowing the native &lt;code&gt;Object&lt;/code&gt; methods will make your code more powerful, secure, and expressive.  &lt;/p&gt;

&lt;p&gt;In this article, we will explore the most important &lt;code&gt;Object&lt;/code&gt; methods available in JavaScript, see examples in action, and understand when to use each of them.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔗 Reference: &lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Object" rel="noopener noreferrer"&gt;MDN Web Docs – Object&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  🔑 Why &lt;code&gt;Object&lt;/code&gt; Methods Matter
&lt;/h2&gt;

&lt;p&gt;JavaScript objects are dynamic, meaning you can create, extend, freeze, or inspect them at runtime.&lt;br&gt;&lt;br&gt;
Native &lt;code&gt;Object&lt;/code&gt; methods provide a safe and standard way to handle these operations without reinventing the wheel.  &lt;/p&gt;


&lt;h2&gt;
  
  
  📦 Complete List of &lt;code&gt;Object&lt;/code&gt; Methods
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔤 Method&lt;/th&gt;
&lt;th&gt;📌 Description&lt;/th&gt;
&lt;th&gt;💻 Example&lt;/th&gt;
&lt;th&gt;🔁 Use Cases&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.keys(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns an array of keys (enumerable own properties).&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.keys({a:1,b:2}) // ["a","b"]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Iterations, debugging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.values(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns an array of values.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.values({a:1,b:2}) // [1,2]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stats, aggregations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.entries(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns array of &lt;code&gt;[key,value]&lt;/code&gt; pairs.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.entries({a:1}) // [["a",1]]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mapping, converting to &lt;code&gt;Map&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.fromEntries(arr)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates an object from key-value pairs.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.fromEntries([["a",1]]) // {a:1}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Transforming results of &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.assign(dest, ...src)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Copies properties from sources into destination.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.assign({}, {a:1},{b:2})&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cloning, merging configs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.create(proto, props?)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates a new object with the given prototype.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;const o = Object.create(null)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prototype patterns, inheritance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.defineProperty(obj, prop, desc)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines a single property with fine control.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.defineProperty(user,"id",{value:1, writable:false})&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Permissions, library design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.defineProperties(obj, props)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines multiple properties at once.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.defineProperties(user,{id:{value:1},name:{value:"Ana"}})&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Advanced configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.getOwnPropertyDescriptor(obj, prop)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gets the descriptor of a property.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.getOwnPropertyDescriptor(user,"id")&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Debugging, validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.getOwnPropertyDescriptors(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gets descriptors for all properties.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.getOwnPropertyDescriptors(user)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deep cloning with descriptors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.getOwnPropertyNames(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns all own property names (even non-enumerable).&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.getOwnPropertyNames(Math)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal inspection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.getOwnPropertySymbols(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns all symbol properties.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.getOwnPropertySymbols(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Metaprogramming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.getPrototypeOf(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gets the prototype of an object.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.getPrototypeOf(new Date())&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Class inspection, OOP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.setPrototypeOf(obj, proto)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets a new prototype for an object.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.setPrototypeOf(obj, Array.prototype)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Advanced patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.is(val1, val2)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Compares values like &lt;code&gt;===&lt;/code&gt; but handles &lt;code&gt;NaN&lt;/code&gt; and &lt;code&gt;+0/-0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.is(NaN,NaN) // true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Safe validations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.isExtensible(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if new properties can be added.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.isExtensible(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Object security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.preventExtensions(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prevents adding new properties.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.preventExtensions(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Lock down structures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.seal(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prevents adding/removing properties (but allows value changes).&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.seal(user)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fixed object structures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.isSealed(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if an object is sealed.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.isSealed(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Debug, validations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.freeze(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Freezes object (no changes allowed).&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.freeze(user)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Config objects, constants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Object.isFrozen(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if object is frozen.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Object.isFrozen(obj)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Debug, immutability&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  🧑‍💻 Practical Example
&lt;/h2&gt;

&lt;p&gt;Here’s a short script based on our &lt;code&gt;Persona&lt;/code&gt; class, showcasing several methods in action:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Define a simple class&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Persona&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;edad&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nombre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;edad&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;edad&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dni&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;persona1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Persona&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Anthony&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;12345678&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;========== BASIC INSPECTION ==========&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Object.keys -&amp;gt; returns own enumerable property names&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; 
&lt;span class="c1"&gt;// ["nombre", "edad", "dni"]&lt;/span&gt;

&lt;span class="c1"&gt;// Object.values -&amp;gt; returns values of enumerable properties&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; 
&lt;span class="c1"&gt;// ["Anthony", 25, "12345678"]&lt;/span&gt;

&lt;span class="c1"&gt;// Object.entries -&amp;gt; returns [key, value] pairs&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; 
&lt;span class="c1"&gt;// [["nombre","Anthony"],["edad",25],["dni","12345678"]]&lt;/span&gt;

&lt;span class="c1"&gt;// Object.fromEntries -&amp;gt; creates object from entries&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;entries&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;]];&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fromEntries&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// { name: "Alice", age: 30 }&lt;/span&gt;


&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;========== CREATION &amp;amp; COPYING ==========&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Object.assign -&amp;gt; copy properties into a new object&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;copy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assign&lt;/span&gt;&lt;span class="p"&gt;({},&lt;/span&gt; &lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// { nombre: 'Anthony', edad: 25, dni: '12345678' }&lt;/span&gt;

&lt;span class="c1"&gt;// Object.create -&amp;gt; create object with prototype&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;proto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello from prototype!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;objWithProto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;proto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;objWithProto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; 
&lt;span class="c1"&gt;// "Hello from prototype!"&lt;/span&gt;


&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;========== PROPERTY DEFINITIONS ==========&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Object.defineProperty -&amp;gt; define single property with descriptor&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;defineProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;writable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 1&lt;/span&gt;
&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// ignored because writable: false&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// still 1&lt;/span&gt;

&lt;span class="c1"&gt;// Object.defineProperties -&amp;gt; define multiple properties&lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;defineProperties&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;writable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Admin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;writable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// { id: 1, name: "John", role: "Admin" }&lt;/span&gt;

&lt;span class="c1"&gt;// Object.getOwnPropertyDescriptor -&amp;gt; inspect one property&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getOwnPropertyDescriptor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// { value: 1, writable: false, enumerable: false, configurable: false }&lt;/span&gt;

&lt;span class="c1"&gt;// Object.getOwnPropertyDescriptors -&amp;gt; inspect all&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getOwnPropertyDescriptors&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;


&lt;span class="c1"&gt;// Object.getOwnPropertyNames -&amp;gt; get all property names (including non-enumerable)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getOwnPropertyNames&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// [ 'id', 'name', 'role' ]&lt;/span&gt;

&lt;span class="c1"&gt;// Object.getOwnPropertySymbols -&amp;gt; get symbol properties&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sym&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Symbol&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;secret&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;sym&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hidden&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getOwnPropertySymbols&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// [ Symbol(secret) ]&lt;/span&gt;


&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;========== PROTOTYPES ==========&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Object.getPrototypeOf -&amp;gt; get prototype of an object&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getPrototypeOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; 
&lt;span class="c1"&gt;// Persona {}&lt;/span&gt;

&lt;span class="c1"&gt;// Object.setPrototypeOf -&amp;gt; set a new prototype&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newProto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;salute&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hey!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setPrototypeOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newProto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;salute&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// "Hey!"&lt;/span&gt;


&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;========== COMPARISONS ==========&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Object.is -&amp;gt; strict comparison (handles NaN and +0/-0)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;is&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;NaN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;NaN&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;is&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;is&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;


&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;========== EXTENSIBILITY &amp;amp; SEALING ==========&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Object.isExtensible -&amp;gt; check if we can add properties&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isExtensible&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="c1"&gt;// Object.preventExtensions -&amp;gt; block adding new properties&lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventExtensions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;newProp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// ignored&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;newProp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// undefined&lt;/span&gt;

&lt;span class="c1"&gt;// Object.seal -&amp;gt; block adding/removing properties, allow changes&lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;seal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nombre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Lucas&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// allowed&lt;/span&gt;
&lt;span class="k"&gt;delete&lt;/span&gt; &lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;edad&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;      &lt;span class="c1"&gt;// ignored&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// { nombre: "Lucas", edad: 25, dni: "12345678" }&lt;/span&gt;

&lt;span class="c1"&gt;// Object.isSealed -&amp;gt; check if sealed&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isSealed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="c1"&gt;// Object.freeze -&amp;gt; block all modifications&lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;freeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;edad&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// ignored&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;edad&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 25&lt;/span&gt;

&lt;span class="c1"&gt;// Object.isFrozen -&amp;gt; check if frozen&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isFrozen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📌 Conclusion
&lt;/h2&gt;

&lt;p&gt;Mastering Object methods is crucial for every JavaScript developer.&lt;br&gt;
They let you inspect, clone, protect, and extend objects safely.&lt;br&gt;
By combining these methods with classes and object-oriented programming, you gain more control over your code and data structures.&lt;/p&gt;

&lt;p&gt;If you’re diving deeper into OOP or functional programming, these tools will quickly become indispensable.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mozilla Developer Network. (n.d.). Object - JavaScript | MDN.
Retrieved August 2025, from &lt;a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Object" rel="noopener noreferrer"&gt;https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Object&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>oop</category>
    </item>
    <item>
      <title>String Methods and Properties</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Sat, 02 Aug 2025 22:33:54 +0000</pubDate>
      <link>https://dev.to/anthonybanion/string-methods-and-properties-1n1i</link>
      <guid>https://dev.to/anthonybanion/string-methods-and-properties-1n1i</guid>
      <description>&lt;h1&gt;
  
  
  📚 Mastering JavaScript String Methods and Properties
&lt;/h1&gt;

&lt;p&gt;Strings are one of the most fundamental data types in JavaScript, and mastering their methods can significantly improve your code quality, readability, and performance.&lt;/p&gt;

&lt;p&gt;In this guide, we'll go through &lt;strong&gt;every essential string method and property&lt;/strong&gt; you need to know in modern JavaScript. You'll learn what each method does, how to use it, and whether it's useful in contexts beyond strings — like arrays, objects, or regular expressions.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Why Learn String Methods?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Make your code more expressive and clean
&lt;/li&gt;
&lt;li&gt;🛠️ Solve common text manipulation problems
&lt;/li&gt;
&lt;li&gt;💡 Better understand JavaScript's built-in functions
&lt;/li&gt;
&lt;li&gt;🧩 Work more easily with arrays, inputs, and file data
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📋 All String Methods and Properties in One Place
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔤 &lt;strong&gt;Method/Property&lt;/strong&gt;
&lt;/th&gt;
&lt;th&gt;📌 &lt;strong&gt;What It Does&lt;/strong&gt;
&lt;/th&gt;
&lt;th&gt;💻 &lt;strong&gt;Usage&lt;/strong&gt;
&lt;/th&gt;
&lt;th&gt;🔁 &lt;strong&gt;Context&lt;/strong&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;length&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns the number of characters&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"abc".length // 3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Also in arrays&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;charAt(n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Character at position &lt;code&gt;n&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"hello".charAt(1) // 'e'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;at(n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Like &lt;code&gt;charAt()&lt;/code&gt; but supports negative indexes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"hello".at(-1) // 'o'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Also in arrays&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;codePointAt(n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns Unicode code point&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"🌍".codePointAt(0)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fromCharCode(n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates string from char code&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;String.fromCharCode(97)&lt;/code&gt; → &lt;code&gt;'a'&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fromCodePoint(n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Unicode-safe version&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;String.fromCodePoint(128512)&lt;/code&gt; → 😀&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;concat()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Joins strings together&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"a".concat("b") // "ab"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ In arrays too&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;includes()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if text exists inside&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"abc".includes("b") // true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;startsWith()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if string starts with&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"abc".startsWith("a") // true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;endsWith()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if string ends with&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"abc".endsWith("c") // true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;indexOf()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Finds position of first match&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"banana".indexOf("a") // 1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ In arrays&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lastIndexOf()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Finds last match position&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"banana".lastIndexOf("a") // 5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;slice(start, end)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Extracts part of the string&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"abcde".slice(1, 4) // 'bcd'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ In arrays&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;substring(start, end)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Like &lt;code&gt;slice&lt;/code&gt;, no negatives&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"abcde".substring(1, 4)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;split(sep)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Converts string to array&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"a,b,c".split(',') // ['a', 'b', 'c']&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;trim()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes spaces at both ends&lt;/td&gt;
&lt;td&gt;&lt;code&gt;" hello ".trim()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;trimStart()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes start spaces only&lt;/td&gt;
&lt;td&gt;&lt;code&gt;" hello".trimStart()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;trimEnd()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes end spaces only&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"hello ".trimEnd()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;toLowerCase()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Converts to lowercase&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"HELLO".toLowerCase()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;toUpperCase()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Converts to uppercase&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"hello".toUpperCase()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;normalize()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Unicode normalization (accents, etc)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"café".normalize("NFD")&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;repeat(n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Repeats string &lt;code&gt;n&lt;/code&gt; times&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"ha".repeat(3) // 'hahaha'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;replace(old, new)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Replaces first match&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"hello".replace("l", "r") // 'herlo'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ With RegExp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;replaceAll(old, new)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Replaces all matches&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"lol".replaceAll("l", "x") // 'xox'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;match(regex)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns match with regex&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"abc123".match(/\d+/) // ['123']&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;matchAll(regex)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All matches (iterable)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[..."ab1cd2".matchAll(/\d/g)] // [["1"],["2"]]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;search(regex)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Index of match by regex&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"abc123".search(/\d/) // 3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;padStart(len, str)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pads at start&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"5".padStart(3, "0") // '005'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;padEnd(len, str)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pads at end&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"5".padEnd(3, "0") // '500'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;localeCompare(str)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Compares respecting locale&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"a".localeCompare("b") // -1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;toString()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Converts to string&lt;/td&gt;
&lt;td&gt;&lt;code&gt;(123).toString() // "123"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Works on all types&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;valueOf()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns primitive string&lt;/td&gt;
&lt;td&gt;&lt;code&gt;new String("x").valueOf()  // "x"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;blockquote&gt;
&lt;p&gt;🔁 &lt;strong&gt;Context Explained&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The &lt;strong&gt;Context&lt;/strong&gt; column indicates whether a method or property is &lt;strong&gt;exclusive to strings&lt;/strong&gt; or also available in other data types like &lt;strong&gt;arrays&lt;/strong&gt;, &lt;strong&gt;numbers&lt;/strong&gt;, or &lt;strong&gt;objects&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ means the method/property is used in &lt;strong&gt;other contexts&lt;/strong&gt; beyond strings (e.g. &lt;code&gt;length&lt;/code&gt; is also in arrays, &lt;code&gt;toString()&lt;/code&gt; works on numbers, booleans, etc).&lt;/li&gt;
&lt;li&gt;❌ means it is &lt;strong&gt;string-only&lt;/strong&gt; and won’t work on other types.&lt;/li&gt;
&lt;/ul&gt;


&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  ✅ Bonus: Common Patterns
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// 🔍 Capitalize first letter&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;capitalize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;charAt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// 🔄 Convert CSV to array&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;csv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name,age,city&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// ["name", "age", "city"]&lt;/span&gt;

&lt;span class="c1"&gt;// 🧼 Clean and normalize&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;clean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;NFD&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;[\u&lt;/span&gt;&lt;span class="sr"&gt;0300-&lt;/span&gt;&lt;span class="se"&gt;\u&lt;/span&gt;&lt;span class="sr"&gt;036f&lt;/span&gt;&lt;span class="se"&gt;]&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧾 Conclusion
&lt;/h2&gt;

&lt;p&gt;JavaScript strings are far more powerful than just storing text. With these methods, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✨ Format user input&lt;/li&gt;
&lt;li&gt;🔍 Parse files and API data&lt;/li&gt;
&lt;li&gt;🔄 Convert data types&lt;/li&gt;
&lt;li&gt;📏 Validate and clean text&lt;/li&gt;
&lt;li&gt;🔐 Work securely with Unicode and international characters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mastering these string tools gives you a solid foundation for any frontend or backend project. Bookmark this guide, and practice each method in your browser console or your favorite editor!&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>CSS Inheritance</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Sun, 27 Jul 2025 00:02:26 +0000</pubDate>
      <link>https://dev.to/anthonybanion/css-inheritance-5de2</link>
      <guid>https://dev.to/anthonybanion/css-inheritance-5de2</guid>
      <description>&lt;h1&gt;
  
  
  🔍 Understanding CSS Inheritance: What Gets Passed Down and What Doesn’t
&lt;/h1&gt;

&lt;p&gt;When writing CSS, understanding how &lt;strong&gt;inheritance&lt;/strong&gt; works can help you write cleaner, more maintainable stylesheets. However, not all CSS properties behave the same way. Some are naturally inherited by child elements, while others are not—requiring you to re-declare them explicitly.&lt;/p&gt;

&lt;p&gt;In this post, I’ll guide you through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What CSS inheritance actually means&lt;/li&gt;
&lt;li&gt;Which properties are inherited by default&lt;/li&gt;
&lt;li&gt;Which ones aren't (but maybe you think they are!)&lt;/li&gt;
&lt;li&gt;A visual reference table to help you remember&lt;/li&gt;
&lt;li&gt;Some tricky exceptions and how to manage them&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📘 What Is CSS Inheritance?
&lt;/h2&gt;

&lt;p&gt;In CSS, &lt;em&gt;inheritance&lt;/em&gt; means that some properties applied to a parent element are automatically applied to its child elements—even if you didn’t explicitly declare them again.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;darkblue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All children of the body (like paragraphs, headings, and links) will inherit this color, unless they override it themselves.&lt;/p&gt;

&lt;p&gt;But not all properties behave this way.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Default Inheritable Properties
&lt;/h2&gt;

&lt;p&gt;Here are the main categories of CSS properties that are inherited by default:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Properties (examples)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;td&gt;color , letter-spacing, line-height, text-align, text-indent, text-transform, visibility, white-space, word-spacing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typography&lt;/td&gt;
&lt;td&gt;font, font-size, font-family, font-style, font-weight, font-variant, line-height&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Table Layout&lt;/td&gt;
&lt;td&gt;border-collapse, border-spacing, caption-side, empty-cells&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List Styling&lt;/td&gt;
&lt;td&gt;list-style, list-style-position, list-style-type, list-style-image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quotes&lt;/td&gt;
&lt;td&gt;quotes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Directionality&lt;/td&gt;
&lt;td&gt;direction, unicode-bidi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These are inherited automatically because it makes sense semantically typography, direction, and lists should stay consistent through content structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔁 Non-Inherited Properties That Affect Children (by Context)
&lt;/h2&gt;

&lt;p&gt;These properties are not inherited, but their presence on a parent element modifies how the children behave, appear, or render.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Effect on Children&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Display/Layout&lt;/td&gt;
&lt;td&gt;display&lt;/td&gt;
&lt;td&gt;Defines whether children become flex/grid/inline-block items&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Positioning&lt;/td&gt;
&lt;td&gt;position&lt;/td&gt;
&lt;td&gt;Changes how children are positioned relative to the parent (relative, absolute)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overflow &amp;amp; Clipping&lt;/td&gt;
&lt;td&gt;overflow, clip-path, contain&lt;/td&gt;
&lt;td&gt;Controls whether children overflow, are clipped, or hidden&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visual Effects&lt;/td&gt;
&lt;td&gt;opacity, transform, filter&lt;/td&gt;
&lt;td&gt;Apply visual transformations that visually affect children too&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flex/Grid Context&lt;/td&gt;
&lt;td&gt;flex, grid, gap&lt;/td&gt;
&lt;td&gt;Turns children into flex/grid items; sets spacing context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Z-index &amp;amp; Stacking&lt;/td&gt;
&lt;td&gt;z-index&lt;/td&gt;
&lt;td&gt;Sets stacking context affecting all descendants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Writing Context&lt;/td&gt;
&lt;td&gt;direction, writing-mode&lt;/td&gt;
&lt;td&gt;Changes the text or layout direction for children&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Isolation &amp;amp; Blend&lt;/td&gt;
&lt;td&gt;isolation, mix-blend-mode&lt;/td&gt;
&lt;td&gt;Changes how children blend or isolate within stacking contexts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Perspective&lt;/td&gt;
&lt;td&gt;perspective, transform-style&lt;/td&gt;
&lt;td&gt;Affects how child transforms are rendered in 3D space&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ❌ Non-Inherited Properties That Affect Only the Element Itself
&lt;/h2&gt;

&lt;p&gt;These properties apply only to the element where they are declared. They do not influence or change the behavior of children.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Properties&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Box Model&lt;/td&gt;
&lt;td&gt;margin, padding, width, height, min/max-width, border, box-sizing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visual Appearance&lt;/td&gt;
&lt;td&gt;background, background-color, box-shadow, border-radius&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Positioning&lt;/td&gt;
&lt;td&gt;top, right, bottom, left, float, clear&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visibility/Interaction&lt;/td&gt;
&lt;td&gt;visibility, cursor, pointer-events, user-select, resize&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Layout &amp;amp; Display&lt;/td&gt;
&lt;td&gt;display, flex, grid, gap, align-self, order&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transformations&lt;/td&gt;
&lt;td&gt;transform, scale, rotate, translate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transitions/Animations&lt;/td&gt;
&lt;td&gt;transition, animation, animation-delay, animation-duration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typography (non-inherited)&lt;/td&gt;
&lt;td&gt;line-clamp, text-overflow, white-space&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔧 Forcing Inheritance, Resetting, or Reverting in CSS
&lt;/h2&gt;

&lt;p&gt;CSS provides special keywords to control the value of any property beyond its default behavior. These are extremely useful when dealing with inheritance or when resetting styles in complex environments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Keyword&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;inherit&lt;/td&gt;
&lt;td&gt;Forces the property to inherit its value from the parent element, even if it's not normally inheritable.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;initial&lt;/td&gt;
&lt;td&gt;Resets the property to its default initial value as defined by the CSS specification (usually the browser default).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;unset&lt;/td&gt;
&lt;td&gt;Acts as inherit if the property is naturally inheritable, otherwise behaves as initial.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;revert&lt;/td&gt;
&lt;td&gt;Reverts the property to the value set by the user-agent stylesheet or a previously applied CSS layer like Bootstrap, Tailwind, or a browser reset stylesheet.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔄 When to Use Each Keyword
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Use inherit when you explicitly want child elements to take a value from their parent.&lt;/li&gt;
&lt;li&gt;🧹 Use initial to remove custom styles and go back to the clean browser default.&lt;/li&gt;
&lt;li&gt;🤷‍♂️ Use unset when you're unsure if the property is inheritable—it covers both cases.&lt;/li&gt;
&lt;li&gt;🔙 Use revert to undo overrides from libraries or external stylesheets, returning to the system/base stylesheet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📌 Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inherit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Will become red because &amp;lt;span&amp;gt; is inside a &amp;lt;p&amp;gt; */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;all&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;unset&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Removes all styling including margin, padding, border, etc. */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📊 Visual Reference Table
&lt;/h2&gt;

&lt;p&gt;Here’s a compact visual table for quick reference:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Inherited by Default?&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;color, font-*, line-height, visibility, text-align, list-style, quotes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;margin, padding, display, flex, position, grid, z-index, background, border, width, height, box-shadow&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🧠 Conclusion
&lt;/h2&gt;

&lt;p&gt;Understanding what gets inherited in CSS (and what doesn’t) is key to writing effective and predictable styles. Inheritable properties are mostly related to typography and content flow, while most layout and visual styling needs to be defined explicitly.&lt;/p&gt;

&lt;p&gt;If you ever find yourself confused, refer back to this post or use the inherit keyword to take full control.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>frontend</category>
    </item>
    <item>
      <title>✨ Everything You Need to Master the DOM</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Tue, 24 Jun 2025 19:35:45 +0000</pubDate>
      <link>https://dev.to/anthonybanion/dom-manipulation-in-javascript-2hnf</link>
      <guid>https://dev.to/anthonybanion/dom-manipulation-in-javascript-2hnf</guid>
      <description>&lt;h1&gt;
  
  
  A Complete Guide to Using the DOM
&lt;/h1&gt;

&lt;h2&gt;
  
  
  📚 Introduction
&lt;/h2&gt;

&lt;p&gt;When you first step into web development, one of the most empowering things you can learn is how to interact with the DOM (Document Object Model) using JavaScript. The DOM is essentially the interface between your HTML and your JavaScript code. Being able to select, modify, style, and dynamically manipulate DOM elements is at the heart of making websites interactive and responsive.&lt;/p&gt;

&lt;p&gt;In this article, we will explore a &lt;strong&gt;comprehensive set of methods&lt;/strong&gt; to manipulate the DOM. We'll cover everything from &lt;strong&gt;selectors&lt;/strong&gt;, &lt;strong&gt;content manipulation&lt;/strong&gt;, &lt;strong&gt;CSS styling&lt;/strong&gt;, &lt;strong&gt;class controls&lt;/strong&gt;, &lt;strong&gt;node traversal&lt;/strong&gt;, &lt;strong&gt;event handling&lt;/strong&gt;, and &lt;strong&gt;creating elements dynamically&lt;/strong&gt;. Whether you're a beginner or brushing up your skills, this guide will be your go-to reference.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 DOM Selectors
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;document.getElementById(id)&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Selects a single element by its ID.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;myTitle&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. &lt;code&gt;document.getElementsByClassName(className)&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Returns a live HTMLCollection of all elements with the specified class.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementsByClassName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;card&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. &lt;code&gt;document.getElementsByTagName(tagName)&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Selects all elements with a given tag name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;div&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. &lt;code&gt;document.querySelector(selector)&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Returns the &lt;strong&gt;first&lt;/strong&gt; element that matches a CSS selector.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.highlight&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. &lt;code&gt;document.querySelectorAll(selector)&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Returns &lt;strong&gt;all&lt;/strong&gt; elements that match a CSS selector.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.item&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📃 Content Manipulation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;innerHTML&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Gets or sets the HTML content inside the element, including nested tags.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;strong&amp;gt;Hello!&amp;lt;/strong&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. &lt;code&gt;innerText&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Gets or sets the &lt;strong&gt;visible text&lt;/strong&gt;, taking CSS visibility and layout into account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Visible only text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. &lt;code&gt;textContent&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Gets or sets &lt;strong&gt;all text content&lt;/strong&gt;, including hidden elements (ignores styling).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Text without rendering&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. &lt;code&gt;value&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Used for form elements like &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; to get or set their value.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;inputElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;New value&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📅 Styling Elements
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Inline Styles
&lt;/h3&gt;

&lt;p&gt;Sets inline CSS directly on the element.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;blue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;backgroundColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#f4f4f4&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Computed Styles
&lt;/h3&gt;

&lt;p&gt;Returns the computed style (final styles including those from CSS files).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;styles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getComputedStyle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖌️ Classes: Add, Remove, Toggle
&lt;/h2&gt;

&lt;p&gt;Use the &lt;code&gt;classList&lt;/code&gt; property to manage element classes efficiently.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;active&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;      &lt;span class="c1"&gt;// Adds a class&lt;/span&gt;
&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hidden&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// Removes a class&lt;/span&gt;
&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toggle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dark-mode&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Toggles a class on/off&lt;/span&gt;
&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;visible&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Checks if class exists&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧰 Node Traversal and DOM Relationships
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Accessing Parent and Child Elements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;parentNode&lt;/code&gt;: Returns the parent node of the element.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;children&lt;/code&gt;: Returns a live HTMLCollection of the child elements.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;firstElementChild&lt;/code&gt;: Returns the first child that is an element.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lastElementChild&lt;/code&gt;: Returns the last child that is an element.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;parent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parentNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;kids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;firstChild&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firstElementChild&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lastChild&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lastElementChild&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Accessing Sibling Elements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;previousElementSibling&lt;/code&gt;: Gets the previous sibling that is an element.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nextElementSibling&lt;/code&gt;: Gets the next sibling that is an element.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prev&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;previousElementSibling&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nextElementSibling&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Creating and Inserting Elements
&lt;/h3&gt;

&lt;p&gt;You can dynamically create elements and insert them into the DOM.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newDiv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;div&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;newDiv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I am new!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newDiv&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Insertion Methods
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;appendChild()&lt;/code&gt;: Adds a node to the end.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;prepend()&lt;/code&gt;: Adds a node to the beginning.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;insertBefore()&lt;/code&gt;: Inserts before a reference node.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;replaceChild()&lt;/code&gt;: Replaces a child node.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;removeChild()&lt;/code&gt;: Removes a child node.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;child&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;prepend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;child&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insertBefore&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newNode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;referenceNode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replaceChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newNode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;oldNode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;child&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚖️ Attribute Management
&lt;/h2&gt;

&lt;p&gt;Use these methods to manipulate element attributes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;src&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;      &lt;span class="c1"&gt;// Sets an attribute&lt;/span&gt;
&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;href&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                 &lt;span class="c1"&gt;// Gets an attribute value&lt;/span&gt;
&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;disabled&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;          &lt;span class="c1"&gt;// Removes an attribute&lt;/span&gt;
&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hasAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;checked&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;              &lt;span class="c1"&gt;// Checks if attribute exists&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔊 Events and Listeners
&lt;/h2&gt;

&lt;p&gt;Add interactivity by responding to events.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Element clicked!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handlerFunction&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Common Events
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;click&lt;/code&gt;: when an element is clicked&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;submit&lt;/code&gt;: when a form is submitted&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;change&lt;/code&gt;: when an input value changes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mouseover&lt;/code&gt;: when hovering over an element&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;keydown&lt;/code&gt;: when a key is pressed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also attach events inline (not recommended for maintainability):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"alert('clicked')"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Click me&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌐 Dynamic Element Creation Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;addUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;userList&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;p&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&amp;lt;strong&amp;gt;Name:&amp;lt;/strong&amp;gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; | &amp;lt;strong&amp;gt;DNI:&amp;lt;/strong&amp;gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;userList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚀 Conclusion
&lt;/h2&gt;

&lt;p&gt;Manipulating the DOM is the cornerstone of building interactive web applications. Mastering selectors, content updates, dynamic element creation, and event handling will make you a more confident and capable frontend developer. These tools give you full control over how your site behaves and responds to user actions.&lt;/p&gt;

&lt;p&gt;Always remember: &lt;strong&gt;the DOM is your canvas, and JavaScript is your brush.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📓 References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mozilla Developer Network (MDN). (n.d.). &lt;em&gt;Document Object Model (DOM)&lt;/em&gt;. Retrieved from: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/JavaScript&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mozilla Developer Network (MDN). (n.d.). &lt;em&gt;Working with the DOM&lt;/em&gt;. Retrieved from: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Thanks for reading! 🚀 You can follow me on &lt;a href="https://dev.to"&gt;Dev.to&lt;/a&gt; or connect on &lt;a href="https://www.linkedin.com/in/anthonybanion/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; for more posts like this!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>What Are Global Attributes in HTML?</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Sun, 08 Jun 2025 23:59:44 +0000</pubDate>
      <link>https://dev.to/anthonybanion/what-are-global-attributes-in-html-571l</link>
      <guid>https://dev.to/anthonybanion/what-are-global-attributes-in-html-571l</guid>
      <description>&lt;h1&gt;
  
  
  What Are Global Attributes in HTML?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Global attributes&lt;/strong&gt; are common to all HTML elements and enhance usability, accessibility, styling, and behavior. They can be applied to most tags and are vital for creating flexible and interactive web pages.&lt;br&gt;
This guide covers key global attributes with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Clear definitions&lt;/li&gt;
&lt;li&gt;🛠️ Practical use cases&lt;/li&gt;
&lt;li&gt;🧪 Real-world examples&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🔹 1. &lt;code&gt;accesskey&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Assigns a keyboard shortcut to focus or activate an element.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;accesskey=&lt;/span&gt;&lt;span class="s"&gt;"s"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Save&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pressing &lt;code&gt;Alt + S&lt;/code&gt; (browser-dependent) activates the button.&lt;br&gt;
&lt;strong&gt;Use for&lt;/strong&gt;: Faster keyboard navigation and accessibility in apps.&lt;br&gt;
Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improves accessibility&lt;/li&gt;
&lt;li&gt;Enables faster navigation for power users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;May conflict with browser or OS shortcuts&lt;/li&gt;
&lt;li&gt;Users might not be aware of the keys&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🔹 2. &lt;code&gt;autocapitalize&lt;/code&gt;, &lt;code&gt;autocorrect&lt;/code&gt;, &lt;code&gt;spellcheck&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Control how text input is capitalized, corrected, and spell-checked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocapitalize=&lt;/span&gt;&lt;span class="s"&gt;"words"&lt;/span&gt; &lt;span class="na"&gt;autocorrect=&lt;/span&gt;&lt;span class="s"&gt;"on"&lt;/span&gt; &lt;span class="na"&gt;spellcheck=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Enhancing UX in mobile or language-sensitive forms.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improves typing accuracy&lt;/li&gt;
&lt;li&gt;Helps users write properly formatted text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Behavior can vary across browsers/devices&lt;/li&gt;
&lt;li&gt;May interfere with technical or code input&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 3. &lt;code&gt;autofocus&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Automatically sets focus on the element when the page loads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autofocus&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Login fields, search boxes, or any element needing initial focus.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhances user flow&lt;/li&gt;
&lt;li&gt;Ideal for forms and logins&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only one &lt;code&gt;autofocus&lt;/code&gt; per page works&lt;/li&gt;
&lt;li&gt;May interfere with screen readers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 4. &lt;code&gt;class&lt;/code&gt; and &lt;code&gt;id&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Identify elements for styling or scripting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"header"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"gray dark"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: CSS styling and JavaScript interactions.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Powerful selectors for CSS/JS&lt;/li&gt;
&lt;li&gt;Enables reusable styles and logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Overuse can create spaghetti code&lt;/li&gt;
&lt;li&gt;Must be unique (&lt;code&gt;id&lt;/code&gt;) or consistent (&lt;code&gt;class&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 5. &lt;code&gt;contenteditable&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Makes the element editable by the user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;contenteditable=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Edit this text&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Inline editing and custom text editors.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple way to add editing to the UI&lt;/li&gt;
&lt;li&gt;Native browser support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited formatting controls&lt;/li&gt;
&lt;li&gt;Needs additional scripting for saving changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 6. &lt;code&gt;data-*&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Stores custom data in HTML elements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;data-user-id=&lt;/span&gt;&lt;span class="s"&gt;"42"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Edit&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Passing extra data to scripts without affecting layout.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean way to attach custom metadata&lt;/li&gt;
&lt;li&gt;Keeps HTML and JS loosely coupled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not meant for styling&lt;/li&gt;
&lt;li&gt;Can be misused for logic-heavy applications&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 7. &lt;code&gt;dir&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Sets text direction (&lt;code&gt;ltr&lt;/code&gt; or &lt;code&gt;rtl&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;dir=&lt;/span&gt;&lt;span class="s"&gt;"rtl"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;مرحبا بك&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Supporting right-to-left languages.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Essential for proper localization&lt;/li&gt;
&lt;li&gt;Improves readability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Must be handled consistently across elements&lt;/li&gt;
&lt;li&gt;Can cause layout issues if forgotten&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 8. &lt;code&gt;draggable&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Allows the element to be dragged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;draggable=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Drag me&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Custom drag-and-drop UIs.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enables interactivity without external libraries&lt;/li&gt;
&lt;li&gt;Native HTML5 support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited customization without JS&lt;/li&gt;
&lt;li&gt;Not supported uniformly across all elements&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 9. &lt;code&gt;hidden&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Hides the element without removing it from the DOM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;hidden&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;This is hidden&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Temporarily hiding elements without deleting them.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy way to toggle visibility&lt;/li&gt;
&lt;li&gt;Keeps layout logic intact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hidden elements are still in the DOM&lt;/li&gt;
&lt;li&gt;Doesn’t free up memory or resources&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 10. &lt;code&gt;lang&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Specifies the language of the element's content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"es"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hola mundo&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Improving SEO and accessibility in multilingual content.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Helps search engines and screen readers&lt;/li&gt;
&lt;li&gt;Essential for accessibility and localization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Often overlooked&lt;/li&gt;
&lt;li&gt;Needs to match actual language content&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 11. &lt;code&gt;style&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Applies inline CSS styles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"color: red;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Red Text&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Quick tests or overrides, not for production styles.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast to apply&lt;/li&gt;
&lt;li&gt;Overrides external styles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Harder to maintain&lt;/li&gt;
&lt;li&gt;Not reusable or scalable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 12. &lt;code&gt;tabindex&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Controls keyboard navigation order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;First&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Second&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Customizing tab order for better navigation.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhances accessibility&lt;/li&gt;
&lt;li&gt;Controls logical flow of interaction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Misuse can create confusing navigation&lt;/li&gt;
&lt;li&gt;Negative values may have side effects&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 13. &lt;code&gt;title&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Shows a tooltip on hover.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Full name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Anthony&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Providing extra information without cluttering the UI.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy to add tooltips&lt;/li&gt;
&lt;li&gt;Works across all modern browsers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not customizable&lt;/li&gt;
&lt;li&gt;May not be accessible via screen readers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔹 14. &lt;code&gt;translate&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Indicates whether content should be translated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;translate=&lt;/span&gt;&lt;span class="s"&gt;"no"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;BrandName&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use for&lt;/strong&gt;: Preventing translation of names, code, or product terms.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prevents translation errors&lt;/li&gt;
&lt;li&gt;Preserves brand consistency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Relies on translation engines supporting it&lt;/li&gt;
&lt;li&gt;Can be misused on translatable content&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧪 Advanced or Experimental Attributes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;inert&lt;/code&gt;: Disables user interaction.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;is&lt;/code&gt;: Used with custom elements.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;role&lt;/code&gt;: Defines ARIA role for accessibility.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;slot&lt;/code&gt;, &lt;code&gt;part&lt;/code&gt;: For Web Components.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;popover&lt;/code&gt;: Native popover behavior.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;virtualkeyboardpolicy&lt;/code&gt;, &lt;code&gt;writingsuggestions&lt;/code&gt;: Enhance mobile UX.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ✅ Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;lang&lt;/code&gt; for SEO and screen readers.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;data-*&lt;/code&gt; for JS logic, not for styling.&lt;/li&gt;
&lt;li&gt;Avoid inline &lt;code&gt;style&lt;/code&gt; in production.&lt;/li&gt;
&lt;li&gt;Combine &lt;code&gt;accesskey&lt;/code&gt;, &lt;code&gt;tabindex&lt;/code&gt;, &lt;code&gt;autofocus&lt;/code&gt; for navigation.&lt;/li&gt;
&lt;li&gt;Pair advanced attributes with proper JavaScript support.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📌 Conclusion
&lt;/h2&gt;

&lt;p&gt;Mastering global attributes empowers you to build more accessible, dynamic, and user-friendly HTML. Use them wisely to enhance interaction, layout control, and responsiveness.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 References
&lt;/h2&gt;

&lt;p&gt;Mozilla Developer Network. (n.d.). &lt;em&gt;HTML global attributes&lt;/em&gt;. Retrieved from &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>frontend</category>
    </item>
    <item>
      <title>What Are Transparent Content Models in HTML5 (And When Should You Use Them)?</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Sun, 08 Jun 2025 14:23:37 +0000</pubDate>
      <link>https://dev.to/anthonybanion/transparent-content-models-in-html5-3mbo</link>
      <guid>https://dev.to/anthonybanion/transparent-content-models-in-html5-3mbo</guid>
      <description>&lt;h1&gt;
  
  
  Understanding Transparent Content Models in HTML5: Practical Guide with Examples
&lt;/h1&gt;

&lt;p&gt;When working with HTML5, some elements are defined as having a &lt;strong&gt;transparent content model&lt;/strong&gt;. This might sound complex at first, but it's an incredibly useful concept—especially when writing semantically rich, accessible, and well-structured HTML documents.&lt;/p&gt;

&lt;p&gt;In this post, we'll explore what a &lt;strong&gt;transparent content model&lt;/strong&gt; means, go through real-life use cases, and review HTML elements that follow this model—complete with code examples and clear explanations.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌐 What is a Transparent Content Model?
&lt;/h2&gt;

&lt;p&gt;In HTML5, if an element has a &lt;strong&gt;transparent content model&lt;/strong&gt;, it means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"If an element has a transparent content model, then its contents must be structured such that they would be valid HTML, even if the transparent element were removed and replaced by the child elements."&lt;/em&gt;&lt;br&gt;&lt;br&gt;
— MDN Web Docs (Mozilla Contributors, n.d.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This means that the element behaves as if it were invisible in terms of what kind of content it allows. It doesn't impose content restrictions of its own but instead adopts the content model of its context (its parent or surrounding elements).&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 Why is this useful?
&lt;/h3&gt;

&lt;p&gt;This ensures that elements used for semantic or structural purposes (like &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;del&amp;gt;&lt;/code&gt;, or &lt;code&gt;&amp;lt;mark&amp;gt;&lt;/code&gt;) don’t interfere with the validity or structure of the surrounding HTML.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 List of HTML Transparent Elements
&lt;/h2&gt;

&lt;p&gt;Here are common elements that have a transparent content model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; — anchor (link)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;del&amp;gt;&lt;/code&gt; — deleted text&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;ins&amp;gt;&lt;/code&gt; — inserted text&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;mark&amp;gt;&lt;/code&gt; — highlighted text&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;abbr&amp;gt;&lt;/code&gt; — abbreviation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;cite&amp;gt;&lt;/code&gt; — citation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;dfn&amp;gt;&lt;/code&gt; — definition&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; — inline code&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;kbd&amp;gt;&lt;/code&gt; — keyboard input&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;samp&amp;gt;&lt;/code&gt; — program output&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;var&amp;gt;&lt;/code&gt; — variable&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;time&amp;gt;&lt;/code&gt; — date/time&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;bdi&amp;gt;&lt;/code&gt; — bidirectional isolation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;bdo&amp;gt;&lt;/code&gt; — bidirectional override&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s explore them one by one with explanations and practical code examples.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔗 &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; – Anchor (Link)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Visit our &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com"&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Go to Example site"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"noopener noreferrer"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;website&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;href: destination URL&lt;/li&gt;
&lt;li&gt;title: tooltip on hover&lt;/li&gt;
&lt;li&gt;target="_blank": opens in a new tab&lt;/li&gt;
&lt;li&gt;rel="noopener noreferrer": improves security when opening external links&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use when: linking to internal or external resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ &lt;del&gt; – Deleted Text
&lt;/del&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  ✅  – Inserted Text
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Original price: &lt;span class="nt"&gt;&amp;lt;del&lt;/span&gt; &lt;span class="na"&gt;cite=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/history"&lt;/span&gt; &lt;span class="na"&gt;datetime=&lt;/span&gt;&lt;span class="s"&gt;"2024-06-01"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;$50&lt;span class="nt"&gt;&amp;lt;/del&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;New price: &lt;span class="nt"&gt;&amp;lt;ins&lt;/span&gt; &lt;span class="na"&gt;cite=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/update"&lt;/span&gt; &lt;span class="na"&gt;datetime=&lt;/span&gt;&lt;span class="s"&gt;"2025-06-01"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;$35&lt;span class="nt"&gt;&amp;lt;/ins&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;cite: source of the change&lt;/li&gt;
&lt;li&gt;datetime: when the change was made&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use when: showing changes in legal documents, edits, or prices.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟡  – Highlighted Text

&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&amp;lt;mark&amp;gt;&lt;/span&gt;Important:&lt;span class="nt"&gt;&amp;lt;/mark&amp;gt;&lt;/span&gt; Always back up your files before updating.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use when: emphasizing parts of a text like warnings or tips.&lt;/p&gt;

&lt;h3&gt;
  
  
  🆎  – Abbreviation

&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;We use &lt;span class="nt"&gt;&amp;lt;abbr&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Cascading Style Sheets"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;CSS&lt;span class="nt"&gt;&amp;lt;/abbr&amp;gt;&lt;/span&gt; for styling web pages.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;title: full version shown on hover&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use when: abbreviating technical or long terms.&lt;/p&gt;

&lt;h3&gt;
  
  
  📖 &lt;cite&gt; – Citation
&lt;/cite&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;I just finished reading &lt;span class="nt"&gt;&amp;lt;cite&amp;gt;&lt;/span&gt;The Great Gatsby&lt;span class="nt"&gt;&amp;lt;/cite&amp;gt;&lt;/span&gt;.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use when: referencing the name of a book, article, or other creative work.&lt;/p&gt;

&lt;h3&gt;
  
  
  📚  – Definition
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&amp;lt;dfn&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"A markup language for structuring web content"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;HTML&lt;span class="nt"&gt;&amp;lt;/dfn&amp;gt;&lt;/span&gt; is the foundation of the web.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;title: definition shown on hover&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use when: defining a new or technical term in a document.&lt;/p&gt;

&lt;h3&gt;
  
  
  👨‍💻 &lt;code&gt; – Inline Code
&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Use &lt;span class="nt"&gt;&amp;lt;code&amp;gt;&lt;/span&gt;console.log('Hello, World!')&lt;span class="nt"&gt;&amp;lt;/code&amp;gt;&lt;/span&gt; to print to the console in JavaScript.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use when: writing small code snippets within text.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⌨️  – Keyboard Input

&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Press &lt;span class="nt"&gt;&amp;lt;kbd&amp;gt;&lt;/span&gt;Ctrl&lt;span class="nt"&gt;&amp;lt;/kbd&amp;gt;&lt;/span&gt; + &lt;span class="nt"&gt;&amp;lt;kbd&amp;gt;&lt;/span&gt;S&lt;span class="nt"&gt;&amp;lt;/kbd&amp;gt;&lt;/span&gt; to save your document.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use when: describing keyboard shortcuts or commands.&lt;/p&gt;

&lt;p&gt;🖥️  – Sample Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;The server responded with: &lt;span class="nt"&gt;&amp;lt;samp&amp;gt;&lt;/span&gt;404 Not Found&lt;span class="nt"&gt;&amp;lt;/samp&amp;gt;&lt;/span&gt;.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use when: displaying output returned by a program or command.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❓  – Variable
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;The value of &lt;span class="nt"&gt;&amp;lt;var&amp;gt;&lt;/span&gt;x&lt;span class="nt"&gt;&amp;lt;/var&amp;gt;&lt;/span&gt; changes dynamically depending on input.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use when: referring to a variable in code, math, or logic.&lt;/p&gt;

&lt;h3&gt;
  
  
  📅 &lt;time&gt; – Time and Date
&lt;/time&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Next meeting: &lt;span class="nt"&gt;&amp;lt;time&lt;/span&gt; &lt;span class="na"&gt;datetime=&lt;/span&gt;&lt;span class="s"&gt;"2025-06-10T14:00"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;June 10 at 2:00 PM&lt;span class="nt"&gt;&amp;lt;/time&amp;gt;&lt;/span&gt;.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;datetime: machine-readable timestamp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use when: displaying event dates, publication dates, or times.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌍  – Bidirectional Isolation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;User: &lt;span class="nt"&gt;&amp;lt;bdi&amp;gt;&lt;/span&gt;مستخدم123&lt;span class="nt"&gt;&amp;lt;/bdi&amp;gt;&lt;/span&gt; has logged in.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use when: displaying user-generated content that might include text with different directionality (like Arabic or Hebrew).&lt;/p&gt;

&lt;h3&gt;
  
  
  ↔️  – Bidirectional Override
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&amp;lt;bdo&lt;/span&gt; &lt;span class="na"&gt;dir=&lt;/span&gt;&lt;span class="s"&gt;"rtl"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;This text will be displayed from right to left.&lt;span class="nt"&gt;&amp;lt;/bdo&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;dir: can be rtl (right-to-left) or ltr (left-to-right)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use when: you need to force the direction of text for presentation purposes.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Conclusion
&lt;/h2&gt;

&lt;p&gt;Transparent content model elements are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Semantically rich&lt;/li&gt;
&lt;li&gt;Structurally flexible&lt;/li&gt;
&lt;li&gt;Safe to nest inside various parent elements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These elements enhance your HTML without breaking its validity, making your documents more accessible, maintainable, and meaningful.&lt;/p&gt;

&lt;p&gt;Use them to improve clarity, usability, and semantic richness in your web projects. ✨&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mozilla Contributors. (n.d.). &lt;em&gt;Content categories: Transparent content model&lt;/em&gt;. MDN Web Docs. Retrieved June 8, 2025, from &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Content_categories#transparent_content_model" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Content_categories#transparent_content_model&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>html</category>
      <category>web</category>
    </item>
    <item>
      <title>What is Recursion?</title>
      <dc:creator>Anthony Bañon Arias</dc:creator>
      <pubDate>Thu, 08 May 2025 14:39:25 +0000</pubDate>
      <link>https://dev.to/anthonybanion/what-is-recursion-2o6h</link>
      <guid>https://dev.to/anthonybanion/what-is-recursion-2o6h</guid>
      <description>&lt;h1&gt;
  
  
  Guide for Beginners
&lt;/h1&gt;

&lt;p&gt;Recursion is a powerful programming concept where a function calls itself to solve smaller instances of a problem. This technique is especially useful when a problem can be naturally divided into similar subproblems.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ When Can Recursion Be Used?
&lt;/h2&gt;

&lt;p&gt;To use recursion effectively, three key conditions must be met:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Base Case:&lt;/strong&gt; A condition that stops the recursion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recursive Case:&lt;/strong&gt; The function must call itself with a simpler or smaller input.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress Toward Base Case:&lt;/strong&gt; Each recursive call must move closer to the base case.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If these aren't met, the function will recurse infinitely, eventually causing a stack overflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  📂 Types of Recursion
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Where It Resolves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Simple Recursion&lt;/td&gt;
&lt;td&gt;Function calls itself once per invocation&lt;/td&gt;
&lt;td&gt;Factorial, Fibonacci&lt;/td&gt;
&lt;td&gt;When returning from base&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tail Recursion&lt;/td&gt;
&lt;td&gt;Recursive call is the last statement, no operation after it&lt;/td&gt;
&lt;td&gt;Accumulative sum&lt;/td&gt;
&lt;td&gt;During descent (no waiting)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mutual Recursion&lt;/td&gt;
&lt;td&gt;Functions call each other&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;is_even()&lt;/code&gt; ↔ &lt;code&gt;is_odd()&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;When returning from base&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multiple Recursion&lt;/td&gt;
&lt;td&gt;Function makes multiple recursive calls&lt;/td&gt;
&lt;td&gt;Fibonacci, Tree Traversal&lt;/td&gt;
&lt;td&gt;When returning from base&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backtracking&lt;/td&gt;
&lt;td&gt;Explore options and undo decisions when needed&lt;/td&gt;
&lt;td&gt;Sudoku solver, Maze&lt;/td&gt;
&lt;td&gt;When returning (and exploring again)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Descending Recursion&lt;/td&gt;
&lt;td&gt;Goes down to the base case and then computes on the way back&lt;/td&gt;
&lt;td&gt;Factorial, Fibonacci&lt;/td&gt;
&lt;td&gt;After reaching the base case&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accumulative Recursion&lt;/td&gt;
&lt;td&gt;Builds up a result during the recursive descent&lt;/td&gt;
&lt;td&gt;Summing a list, Tree folding&lt;/td&gt;
&lt;td&gt;During descent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧩 Key Recursion Patterns
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;📉 Descending&lt;/td&gt;
&lt;td&gt;Reaches the base case and solves on the way back&lt;/td&gt;
&lt;td&gt;Factorial, Towers of Hanoi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📈 Accumulative&lt;/td&gt;
&lt;td&gt;Builds a result while descending&lt;/td&gt;
&lt;td&gt;Sum list elements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔁 Mutual (Alternating)&lt;/td&gt;
&lt;td&gt;Alternates between functions&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;is_even(n)&lt;/code&gt;, &lt;code&gt;is_odd(n)&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔄 Backtracking&lt;/td&gt;
&lt;td&gt;Explores paths, undoes, and tries again&lt;/td&gt;
&lt;td&gt;Maze solver, n-Queens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ✍️ Simple Examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Factorial (Simple Recursion)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;factorial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;factorial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Tail Recursion (Sum Accumulator)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sum_tail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;acc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;acc&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;sum_tail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;acc&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Mutual Recursion (Even/Odd)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_even&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;is_odd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_odd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;is_even&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Multiple Recursion (Fibonacci)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Backtracking (Maze Path Finder - conceptually)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;solve_maze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;maze&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;is_goal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;direction&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;possible_moves&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;solve_maze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;maze&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;new_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;new_y&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;  &lt;span class="c1"&gt;# backtrack if no direction works
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📋 Summary Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Simple&lt;/th&gt;
&lt;th&gt;Multiple&lt;/th&gt;
&lt;th&gt;Accumulative&lt;/th&gt;
&lt;th&gt;Descending&lt;/th&gt;
&lt;th&gt;Backtracking&lt;/th&gt;
&lt;th&gt;Resolves When&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Factorial&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;After base case&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fibonacci&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;After base case&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sum Accumulated&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;During descent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;is_even/is_odd&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;After base case&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maze Solver&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;During backtrack&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧠 Conclusion
&lt;/h2&gt;

&lt;p&gt;Recursion is more than just a function calling itself — it's a way of thinking about problems. It allows you to divide tasks into smaller parts, handle dynamic structures like trees and graphs, and model decision-making processes like backtracking. By understanding the types, patterns, and proper use cases, you can write more elegant and efficient code.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Want to dive deeper? Try visualizing recursion using &lt;strong&gt;stack traces&lt;/strong&gt; or &lt;strong&gt;call trees&lt;/strong&gt; — it really helps!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;✍️ &lt;em&gt;Written by Anthony Banion – passionate backend developer, tech writer &amp;amp; student of systems analysis. Follow me for more learning guides!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>recursion</category>
    </item>
  </channel>
</rss>
