🔤 زبان: فارسی + English 👶 سطح: مبتدی تا پیشرفته (Beginner to Advanced) 🌐 قابل استفاده برای فرانتاند، بکاند و فولاستک
🇫🇮 فارسی: جاوااسکریپت یک زبان اسکریپتی قدرتمند برای تعامل با صفحات وب و ساخت اپلیکیشنهای تحت وب است. 🇺🇸 English: JavaScript is a powerful scripting language used to create dynamic and interactive web content.
console.log("Hello, world!");🗣️ 🇫🇮 فارسی: برای نمایش خروجی در کنسول مرورگر استفاده میشود. 🇺🇸 English: Prints output to the browser's console.
var x = 10;
let y = 20;
const z = 30;🧠 🇫🇮 فارسی: برای ذخیره دادهها در حافظه استفاده میشود. 🇺🇸 English: Used to store data in memory.
let name = "Ali"; // String
let age = 25; // Number
let isOnline = true; // Boolean
let address = null; // Null
let phone; // Undefined
let person = { name: "Ali", age: 25 }; // Object
let numbers = [1, 2, 3]; // Array// Arithmetic
+ - * / %
// Comparison
== === != !== > < >= <=
// Logical
&& || !if (age > 18) {
console.log("Adult");
} else {
console.log("Minor");
}
let result = age > 18 ? "Adult" : "Minor"; // Ternary// For loop
for (let i = 0; i < 5; i++) {
console.log(i);
}
// While loop
let i = 0;
while (i < 5) {
console.log(i++);
}
// Do...while
do {
console.log(i++);
} while (i < 10);
// For...of
for (let item of [10, 20, 30]) {
console.log(item);
}
// For...in
for (let key in {a: 1, b: 2}) {
console.log(key);
}function greet(name) {
return "Hello, " + name;
}
const greet2 = (name) => "Hi, " + name;
function welcome(name = "Guest") {
console.log("Welcome, " + name);
}let person = {
name: "Sara",
age: 30,
greet() {
console.log("Hi, I'm " + this.name);
}
};
let nums = [1, 2, 3];
nums.push(4); // Add
nums.pop(); // Remove last
nums.shift(); // Remove first
nums.unshift(0); // Add to start
nums.forEach(n => console.log(n));let nums = [1, 2, 3, 4];
nums.map(n => n * 2); // [2, 4, 6, 8]
nums.filter(n => n % 2 === 0); // [2, 4]
nums.reduce((a, b) => a + b); // 10
nums.find(n => n > 2); // 3const { name, age } = { name: "Ali", age: 30 };
const [a, b] = [10, 20];let arr = [1, 2, 3];
let newArr = [...arr, 4]; // Spread
function sum(...nums) { // Rest
return nums.reduce((a, b) => a + b, 0);
}function factorial(n) {
if (n === 1) return 1;
return n * factorial(n - 1);
}try {
risky();
} catch (error) {
console.error(error.message);
} finally {
console.log("Done");
}// A.js
export const name = "Ali";
export default function hello() {
console.log("Hello");
}
// B.js
import hello, { name } from './A.js';
hello();class Person {
constructor(name) {
this.name = name;
}
speak() {
console.log("Hi, I'm " + this.name);
}
}
const p = new Person("Ali");
p.speak();console.log("Start");
setTimeout(() => {
console.log("Timeout");
}, 0);
console.log("End");
// Output: Start -> End -> Timeout<button onclick="sayHi()">Click me</button>
<script>
function sayHi() {
alert("Hello!");
}
</script>document.getElementById("title").textContent = "New Title";
document.querySelector("p").style.color = "red";const user = { profile: { name: "Sara" } };
console.log(user?.profile?.name); // "Sara"
console.log(user?.address?.city); // undefined
let name = null;
console.log(name ?? "Guest"); // "Guest"const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
const success = true;
if(success) resolve("عملیات موفق بود!");
else reject("عملیات شکست خورد!");
}, 1000);
});
myPromise
.then(result => console.log(result))
.catch(error => console.error(error));
async function fetchData() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
const data = await response.json();
console.log(data);
} catch (error) {
console.error("خطا در دریافت داده:", error);
}
}
fetchData();let mySet = new Set([1, 2, 3]);
mySet.add(4);
let myMap = new Map();
myMap.set("name", "Ali");
console.log(myMap.get("name"));function* generator() {
yield 1;
yield 2;
yield 3;
}
const gen = generator();
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3
const sym = Symbol('id');
const obj = {
[sym]: 123
};
console.log(obj[sym]); // 123const target = {};
const handler = {
get(target, prop) {
return `ویژگی ${prop} خوانده شد`;
}
};
const proxy = new Proxy(target, handler);
console.log(proxy.anything); // ویژگی anything خوانده شد
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error('خطا:', err));
// LocalStorage
localStorage.setItem('name', 'علی');
console.log(localStorage.getItem('name')); // "علی"let name = "Ali";
function greet() {
let name = "Sara"; // Shadowing variable from outer scope
console.log(name); // Sara
}
greet();
console.log(name); // Aliconst obj = {
name: "Object",
showThis() {
console.log(this.name);
}
};
obj.showThis(); // Object
function standalone() {
console.log(this);
}
standalone(); // window (یا undefined در strict mode)// math.js
export function add(a, b) {
return a + b;
}
// main.js
import { add } from './math.js';
console.log(add(2, 3)); // 5function createObj() {
let obj = {name: "temp"};
return obj;
}
let myObj = createObj();
// وقتی myObj به null یا undefined تغییر کند، حافظه obj آزاد میشود
myObj = null;function createObj() {
let obj = {name: "temp"};
return obj;
}
let myObj = createObj();
// وقتی myObj به null یا undefined تغییر کند، حافظه obj آزاد میشود
myObj = null;// Bad practice
function c(a, b) {
return a+b;
}
// Clean code
function calculateSum(firstNumber, secondNumber) {
return firstNumber + secondNumber;
}const target = {};
const handler = {
get: (obj, prop) => {
return prop in obj ? obj[prop] : `Property ${prop} does not exist`;
}
};
const proxy = new Proxy(target, handler);
console.log(proxy.name); // Property name does not exist// Factory Pattern
function createPerson(name, age) {
return {
name,
age,
greet() {
console.log(`Hi, I'm ${name}`);
}
};
}
const person = createPerson("Ali", 30);
person.greet(); // Hi, I'm Ali
// Module Pattern
const counterModule = (function() {
let count = 0;
return {
increment() {
count++;
console.log(count);
},
reset() {
count = 0;
console.log(count);
}
};
})();
counterModule.increment(); // 1
counterModule.reset(); // 0