You'll be reading:
JavaScript is a dynamically typed language, which means that you don’t have to explicitly declare the data type of a variable. JavaScript has several built-in data types, including:
- Primitive Data Types:
- Number: integer and floating-point numbers.
- String: a sequence of characters enclosed in single or double quotes.
- Boolean: either true or false.
- Null: the absence of any object value.
null
is a special value in JavaScript that represents the intentional absence of any object value. It is often used to indicate that a variable or object property has no value or is uninitialized. If you assignnull
to a variable, you are explicitly stating that the variable has no value. - Undefined: Represents an uninitialized or unassigned value.
undefined
is a primitive value in JavaScript that is assigned to a variable when it is declared but not initialized with a value.It is also the default return value of a function that does not explicitly return anything. - Symbol: In JavaScript,
Symbol
is a primitive data type introduced in ECMAScript 2015 (ES6). Symbols are unique and immutable values that can be used as identifiers for object properties.They are often used to create private or hidden object properties to avoid naming conflicts.Symbols are created using theSymbol()
function, and each symbol created is unique.
let car = null;
console.log(car); // Output: null
let name;
console.log(name); // Output: undefined
function greet() {
// No return statement
}
console.log(greet()); // Output: undefined
const sym = Symbol();
console.log(typeof sym); // Output: "symbol"
- Composite Data Types:
- Object: Represents a collection of key-value pairs, where values can be of any data type. Objects can be created using the object literal syntax (
{}
) or thenew
keyword with a constructor function. Objects’ properties are accessed using dot notation (object.property
) or bracket notation (object["property"]
). - Array: Represents an ordered collection of elements. Arrays can store values of any data type and are created using square brackets (
[]
). Elements within an array are accessed using numeric indices, starting from 0.Arrays can hold values of any data type, including numbers, strings, objects, and even other arrays. Set
: is an object introduced in ECMAScript 2015 (ES6) that allows you to store unique values of any type, whether primitive values or object references. ASet
does not allow duplicate values, so any value added multiple times will only be stored once. It provides various methods for adding, removing, and iterating over values.
//object
const person = {
name: "John",
age: 25,
isStudent: true,
hobbies: ["reading", "gaming"],
address: {
street: "123 Main St",
city: "Exampleville"
}
};
const book = {
title: "The Great Gatsby",
author: "F. Scott Fitzgerald",
year: 1925
};
//Array
const numbers = [1, 2, 3, 4, 5]; // Array of numbers
const fruits = ["apple", "banana", "orange"]; // Array of strings
const mixedArray = [1, "hello", true, { name: "John" }]; // Array of mixed data types
//set
const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(2); // Duplicate value, ignored
console.log(mySet.size); // Output: 2
console.log(mySet.has(1)); // Output: true
console.log(mySet.has(3)); // Output: false
mySet.delete(1);
console.log(mySet.has(1)); // Output: false
mySet.forEach(value => {
console.log(value);
});
// Output:
// 2
In JavaScript, variables are declared using the var
, let
, or const
keywords. The var
keyword is the oldest way to declare variables, while let
and const
were introduced in ECMAScript 6 (ES6) to provide block scoping.
Variables declared with var
and let
can be reassigned to different values, but variables declared with const
are read-only and cannot be reassigned once a value is assigned to them.
Here’s an example that demonstrates declaring and using variables of different data types:
var age = 25; // Number
let name = "John"; // String
const isStudent = true; // Boolean
var car = null; // Null
let city; // Undefined
let person = { // Object
firstName: "Jane",
lastName: "Doe"
};
const numbers = [1, 2, 3, 4, 5]; // Array
console.log(age);
console.log(name);
console.log(isStudent);
console.log(car);
console.log(city);
console.log(person);
console.log(numbers);
Output:
25
John
true
null
undefined
{ firstName: 'Jane', lastName: 'Doe' }
[ 1, 2, 3, 4, 5 ]
Remember that JavaScript is dynamically typed, so a variable can hold values of different data types at different points in your code. For example, a variable initially assigned a number can later be reassigned to a string, an object, or any other data type.
let x = 10;
console.log(x); // Output: 10
x = "Hello";
console.log(x); // Output: "Hello"
x = { name: "John" };
console.log(x); // Output: { name: "John" }
Type Coercion in JavaScript
It’s also important to note that JavaScript has type coercion, which means it can automatically convert values from one type to another in certain contexts. Let’s understand Type Coercion:
- Type coercion refers to JavaScript’s automatic conversion of values from one data type to another when operators or functions expect a different type.
- JavaScript performs both implicit and explicit type coercion.
- Implicit coercion happens when JavaScript converts values behind the scenes, such as when performing arithmetic operations or comparing different data types.
- Example:
console.log(5 + "5"); // Output: "55" (number 5 is coerced to a string)
console.log("10" - 5); // Output: 5 (string "10" is coerced to a number)
There are some common scenarios related to variables in JavaScript which causes errors in the code.
- Not initializing variables properly, leading to unintended undefined values.
- Assuming a variable will always hold a specific data type without proper validation, which can cause unexpected errors or bugs.
- Failing to handle type coercion properly, resulting in unexpected behavior or incorrect calculations.
- Overwriting a variable with a different data type without considering the impact on subsequent code.
- Ignoring potential pitfalls of certain operations or functions that can cause type-related issues.
To avoid such mistakes, it’s important to be aware of JavaScript’s data types, understand the behavior of type coercion, validate inputs, and ensure proper initialization and reassignment of variables. Additionally, following best practices, writing clear and concise code, and thorough testing can help identify and prevent these types of errors.
In JavaScript, variable names follow certain syntax rules.
- Variable names must start with a letter (a-z, A-Z) or an underscore (_). They cannot start with a number.
- Variable names can contain letters, numbers, and underscores. They are case-sensitive, so “myVariable” and “myvariable” would be considered different variables.
- Variable names cannot be the same as JavaScript keywords or reserved words. For example, you cannot use “if”, “function”, “var”, or “true” as variable names.
- Variable names should be descriptive and meaningful, giving an indication of the purpose or content of the variable. It’s good practice to use camelCase style, starting with a lowercase letter and using uppercase letters to separate words within the name. For example: “myVariableName”.
some valid examples of JavaScript variable names:
var age;
var firstName;
var _count;
var myVariable;
var numberOfStudents;
some invalid examples:
var 123abc; // Starts with a number
var first-name; // Contains a hyphen (not allowed)
var function; // Uses a JavaScript keyword as a variable name
It’s important to follow these syntax rules to ensure that your variable names are valid and to avoid any potential errors or conflicts in your JavaScript code.