console.log("Hello JavaScript!") <script>
console.log("Hello JavaScript!")
</script>
<script src="test.js"></script>// Values
console.log("Test")
console.log(23);
// Variables
let firstName = "John";
console.log(firstName);// Number
let age = 23;
// String
let firstName = "John"
// Boolean
let isAdmin = true
// Undefined
let nothing;
// Null
let empty = null;
// Symbol
const sym = Symbol("test")
// BigInt
let hugeNum = BigInt(1234567890123456789012345678901234567890)let a = 1;
a = 2;
console.log(a); // 2
const b = 1;
b = 2;
console.log(b); // TypeError: Attempted to assign to readonly property.
var c = 1;
c = 2;
console.log(c); // 2let is block scoped, var is function scoped.
let a = 2;
let b = 3;
console.log(a, b); // 2 3
a+= 1;
b-= 1;
console.log(a, b); // 3 2
let sum = a + b;
console.log(sum); // 5
let sub = a - b;
console.log(sub); // 1
let mul = a * b;
console.log(mul); // 6
let div = a / b;
console.log(div); // 1.5
let mod = a % b;
console.log(mod); // 1
let pow = a ** b;
console.log(pow); // 9
let inc = 3;
inc++;
console.log(inc); // 4
let dec = 3;
dec--;
console.log(dec); // 2console.log(a == b); // false
console.log(a != b); // true
console.log(a > b); // false
console.log(a >= b); // false
console.log(a < b); // true
console.log(a <= b); // trueParenthesis, exponents, multiplication, division, addition, substraction
const firstName = "John";
const lastName = "Smith";
const birthYear = 1983;
const currentYear = 2025;
const str = "I am " + firstName + " " + lastName + ", a " + (currentYear - birthYear) + " years old.";
console.log(str);
const templateLiteral = `I am ${firstName} ${lastName}, a ${currentYear - birthYear} years old.`;
console.log(templateLiteral);const birthYear = 2020;
const currentYear = 2025;
const legalDrivingAge = 18;
const age = currentYear - birthYear;
if (age >= legalDrivingAge) {
console.log('You are old enough to drive');
} else {
console.log(`You have ${legalDrivingAge - age} years to wait until you can drive`);
} // Type conversion
const inputYear = '1991';
console.log(inputYear + 18); // 199118
console.log(18 + inputYear); // 181991
console.log(Number(inputYear) + 18); // 2009
console.log(Number('John')); // NaN
console.log(String(23), 23); // 23 23
// Type coercion
console.log(`I am ${99} years old`) // I am 99 years old
console.log('23' - '10' - 3); // 10
console.log('23' + '10' + 3); // 23103// Falsy values
console.log(Boolean(0));
console.log(Boolean(''));
console.log(Boolean(undefined));
console.log(Boolean(null));
console.log(Boolean(NaN));
// Truthy values
console.log(Boolean(4));
console.log(Boolean('hi'));
console.log(Boolean([]));
console.log(Boolean({}));
console.log(Boolean(function(){}));== does type coercion, === does not.
const age = 18
console.log(age == 18); // true
console.log(age == '18'); // true
console.log(age === 18); // true
console.log(age === '18'); // false
console.log(age != 18); // false
console.log(age != '18'); // false
console.log(age !== 18); // false
console.log(age !== '18'); // trueconst isLoggedIn = true;
const isAdmin = false
console.log(isLoggedIn && isAdmin); // false
console.log(isLoggedIn || isAdmin); // true
console.log(!isLoggedIn); // false
console.log(!isAdmin); // true
console.log(isLoggedIn && !isAdmin); // true
console.log(isLoggedIn || !isAdmin); // true
console.log(isLoggedIn && isAdmin && !isBanned); // false
console.log(isLoggedIn || isAdmin || !isBanned); // trueconst day = 'Monday';
switch(day){
case 'Monday':
console.log('Plan for the week');
break;
case 'Tuesday':
console.log('Meeting with the team');
break;
case 'Wednesday':
console.log('Work on the project');
break;
case 'Thursday':
console.log('Meeting with the client');
break;
case 'Friday':
console.log('Prepare for the weekend');
break;
case 'Saturday':
case 'Sunday':
console.log('Enjoy the weekend');
break;
default:
console.log('Invalid day');
}console.log(a >= 18 ? console.log('wine') : console.log('water'));Strict mode forbids us to do certain things and creates visible errors in situations where JS would normally fail silently.
'use strict';
const isAdmin = true;
let isLoggedIn = false;
const password = '123456';
if(password === '123456'){
isLogIn = true;
console.log('Welcome to the admin panel');
}With strict mode there will be an error (Can't find variable: isLogIn). Without strict mode this will run and output the message.
function logger(message) {
console.log(message)
}
logger('Test message');
function sum(a, b) {
return a + b;
}
logger(sum(1, 2)); // 3// Declaration
function sum(a, b) {
return a + b;
}
console.log(sum(1, 2)); // 3
// Expression
const sub = function (a, b) {
return a - b;
};
console.log(sub(1, 2)); // -1- Arrow functions do not create their own this binding
const sum = (a, b) => a + b;
console.log(sum(1, 2)); // 3
const sub = (a, b) => {
return a - b;
};
console.log(sub(1, 2)); // -1const users = ['John', 'Juan', 'João'];
console.log(users, users.length, users[0]);
users[2] = 'Silvia';
console.log(users, users.length, users[2]);
users.push('Pedro');
console.log(users, users.length);
users.push('Ana', 'Maria'); //Last
console.log(users, users.length);
users.unshift('Peter'); //First
console.log(users, users.length);
let popped = users.pop(); //Last
console.log(users, users.length, popped);
let shifted = users.shift(); //First
console.log(users, users.length, shifted);
console.log('Silvia', users.indexOf('Silvia')); // 2
console.log('Silvia', users.includes('Silvia')); // trueconst user = {
firstName: 'John',
lastName: 'Smith',
isTeacher: true,
age: 25,
students: ['Silvia', 'Juan', 'João'],
address: {
street: 'Main St',
number: 100,
city: 'New York'
},
greet: function() {
console.log(`Hello, my name is ${this.firstName}`);
}
}
console.log(user.firstName);
const nameKey = 'Name';
console.log(user['last' + nameKey]);
user.greet();const users = ['John', 'Juan', 'João'];
for (const user of users) {
console.log(user);
}
for (const user of users) {
if(user === 'Juan') break;
console.log(user);
} // Breaks the whole loop
for (const user of users) {
if(user === 'Juan') continue;
console.log(user);
} // Skips the current iterationlet dice = 0;
while (dice !== 6) {
dice = Math.floor(Math.random() * 6) + 1;
console.log(`You rolled a ${dice}`);
if (dice === 6) console.log('You won!');
}- Values have types, variables dont.
- Only primitive values are immutable with
const. constarrays can be modified but not replaced.