جمعبندی کامل مباحث جلسه: آمادهسازی محیط، اجرای JavaScript، متغیرها، انواع داده، Object، Array، Function، Loop، Callback، متدهای آرایه، Template Literals، نامگذاری، خطاهای رایج و تمرینهای مرور.
| ابزار | کاربرد |
|---|---|
| VS Code | ویرایشگر کد |
| Node.js | اجرای فایلهای .js در ترمینال |
| Chrome + DevTools | اجرای HTML و دیدن Console |
| Live Server | باز کردن HTML و رفرش خودکار بعد از ذخیره |
code .
console.log("TEST");
node test.js
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>Introduction to JavaScript</title>
</head>
<body>
<h1>JavaScript in Browser</h1>
<script>
console.log("Hello from browser");
</script>
</body>
</html>
node page.html اجرا نکن. Node برای اجرای مستقیم فایل JavaScript است.
| کلیدواژه | تغییر مقدار | تعریف مجدد | محدوده |
|---|---|---|---|
var | بله | بله | function |
let | بله | خیر | block {} |
const | خیر* | خیر | block {} |
let age = 25; age = 26; // مجاز const PI = 3.14; // PI = 3.14159; // Error let j = 10; // let j = 20; // Error
const یک Array یا Object باشد، محتویات داخلش میتواند تغییر کند،
ولی خود متغیر را نمیتوان به مقدار دیگری نسبت داد.
| نوع | دسته | مثال | معنی |
|---|---|---|---|
string | Primitive | "Ali" | متن |
number | Primitive | 25 | عدد |
bigint | Primitive | 999999n | اعداد خیلی بزرگ |
boolean | Primitive | true | true / false |
undefined | Primitive | let x; | بدون مقدار |
null | Primitive | let x = null; | خالی عمدی |
symbol | Primitive | Symbol("id") | مقدار یکتا |
object | Reference | {name:"Ali"} | داده ساختاریافته |
// String
let name = "Ali";
let greeting = `سلام ${name}`;
// Number
let pi = 3.14;
// BigInt
let big = 9007199254740991n;
big + 10n;
// Boolean
let isActive = true;
const pending = false;
// undefined و null
let m;
let n = null;
// Symbol
let id1 = Symbol("id");
let id2 = Symbol("id");
console.log(id1 == id2); // false
console.log(typeof "hello"); // string console.log(typeof 42); // number console.log(typeof true); // boolean console.log(typeof null); // object
typeof null مقدار object میدهد؛ این رفتار تاریخی JavaScript است.
const car = {
brand: "Toyota",
model: "Corolla",
start: function () {
console.log("Car is Started");
},
};
car.start();
car.brand = "BMW";
// car = { test: 1 }; // Error
| مفهوم | مثال |
|---|---|
| Property | car.brand |
| Method | car.start() |
let scores = [10, 19, 13, 8, 20]; console.log(scores); console.log(scores.length); // 5 console.log(scores[0]); // 10
| متد | کار |
|---|---|
push(x) | اضافه کردن به انتها |
unshift(x) | اضافه کردن به ابتدا |
pop() | حذف از انتها |
shift() | حذف از ابتدا |
splice() | حذف / اضافه / جایگزینی در وسط |
scores.push(15); scores.unshift(4); scores.pop(); scores.shift(); scores.splice(1, 2, 17, 18);
function sum(a, b) {
return a + b;
}
console.log(sum(10, 134)); // 144
function average(a, b) {
return (a + b) / 2;
}
const sum2 = (a, b) => {
return a + b;
};
const sum3 = (a, b) => a + b;
{ }، نتیجه expression بهصورت ضمنی return میشود.
با { } باید return را بنویسی.
let scores = [10, 12, 4, 19, 18];
for (let i = 0; i < scores.length; i++) {
console.log(scores[i]);
}
| بخش | معنی |
|---|---|
let i = 0 | شروع شمارنده از صفر |
i < scores.length | تا انتهای آرایه |
i++ | هر بار یک واحد افزایش |
scores[i] | عضو فعلی آرایه |
let total = 0;
for (let i = 0; i < scores.length; i++) {
total += scores[i];
}
console.log(total);
function avg(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum / arr.length;
}
const products = ["Laptop", "Phone", "Tablet"];
for (let i = 0; i < products.length; i++) {
console.log(products[i]);
}
for از map() استفاده میکنیم.
Callback تابعی است که به عنوان آرگومان به تابع دیگری داده میشود.
function calc(a, b, callback) {
let add = a + b;
let sub = a - b;
let mul = a * b;
let div = a / b;
callback({ add, sub, mul, div });
}
calc(10, 5, function (result) {
console.log(result.add); // 15
console.log(result.mul); // 50
});
function calculate(a, b, callback) {
let result = a * b;
callback(result);
}
calculate(4, 5, function (answer) {
console.log(answer);
});
// 20
let scores = [10, 12, 4, 19, 18];
| متد | کار | خروجی |
|---|---|---|
forEach | انجام یک کار روی هر عضو | undefined |
map | تبدیل اعضا | آرایه جدید همطول |
filter | انتخاب با شرط | آرایه جدید |
reduce | خلاصهسازی | یک مقدار |
scores.forEach(function (value, index, array) {
console.log(value, index);
});
let scores100 = scores.map((v) => v * 5);
let scoresTop10 = scores.filter((v) => v >= 10);
let total = scores.reduce((p, v) => p + v, 0); let average = scores.reduce((p, v) => p + v, 0) / scores.length;
products.map((product) => (
<div key={product.id}>
{product.name}
</div>
))
let a = 5;
let b = 10;
let message = `
a = ${a}
b = ${b}
sum = ${a + b}
`;
console.log(message);
` استفاده میکنیم و با ${ } متغیر یا expression را داخل متن قرار میدهیم.
let userName = "Mehrnaz";
let count = 3;
let message =
`Hello ${userName}, you have ${count} products.`;
| سبک | مثال | کاربرد معمول |
|---|---|---|
| camelCase | userName, getElementById | متغیر و تابع |
| PascalCase | UserName, MyComponent | Class و Component در React |
| UPPER_SNAKE | MAX_SIZE, API_KEY | ثابتهای سراسری |
| پیام | علت احتمالی |
|---|---|
Identifier 'x' has already been declared |
تعریف دوباره let یا const در همان scope |
Assignment to constant variable |
مقداردهی مجدد به const |
Cannot mix BigInt and other types |
ترکیب BigInt و Number بدون تبدیل |
typeof null === "object" |
رفتار تاریخی JavaScript |
ReferenceError: x is not defined |
متغیر در محیط فعلی تعریف نشده است |
Unexpected token '<' |
معمولاً فایل HTML را اشتباهی با Node اجرا کردهای |
test.js 01-introduction-to-javascript.html 02-variable.html 03-datatype.html 04-array.html 05-function.html 06-iteration.html 07-naming-convention.html 08-callback-function.html
let و یک مقدار با const بساز و یکی را عمداً اشتباه تغییر بده.map همه را ×۲ کن.filter فقط مقادیر بزرگتر یا مساوی ۱۲ را نگه دار.reduce مجموع و میانگین آرایه را حساب کن.این بخش شامل خودِ کدهای فایلهای اصلی تمرین است؛ یعنی همان فایلهایی که داخل پوشه جلسه داری، نه فقط مثالهای خلاصهشده.
کد کامل فایل اصلی جلسه:
console.log("TEST");
کد کامل فایل اصلی جلسه:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>Introduction to JavaScript</title>
</head>
<body>
<h1>JavaScript in Browser</h1>
<script>
console.log("Hello from browser");
</script>
</body>
</html>
کد کامل فایل اصلی جلسه:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>Variables in JavaScript</title>
</head>
<body>
<h1>var, let, const</h1>
<script>
var oldWay = "with var";
let age = 25;
age = 26;
const PI = 3.14;
// PI = 3.14159; // TypeError: Assignment to constant variable
let j = 10;
// let j = 20; // SyntaxError: Identifier 'j' has already been declared
console.log(oldWay, age, PI, j);
</script>
</body>
</html>
کد کامل فایل اصلی جلسه:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>Data Types in JS</title>
</head>
<body>
<h1>Data Types in JS</h1>
<script>
// String & Template Literal
let name = "Ali";
let a = 5;
let greeting = `سلام ${name}, a = ${a}`;
// Number
let pi = 3.14;
// BigInt
let big = 9007199254740991n;
console.log(big + 10n);
// Boolean
let isActive = true;
const pending = false;
// undefined & null
let m;
let n = null;
console.log(typeof m, typeof n); // undefined, object
// Symbol
let id1 = Symbol("id");
let id2 = Symbol("id");
console.log(id1 == id2); // false
// Object
const car = {
brand: "Toyota",
model: "Corolla",
start: function () {
console.log("Car is Started");
},
};
car.start();
car.brand = "BMW";
console.log(car);
console.log(greeting, pi, isActive, pending);
</script>
</body>
</html>
کد کامل فایل اصلی جلسه:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>Arrays in JavaScript</title>
</head>
<body>
<h1>Array Methods</h1>
<script>
let scores = [10, 19, 13, 8, 20];
console.log(scores, scores.length);
scores.push(15);
scores.unshift(4);
scores.pop();
scores.shift();
scores.splice(1, 2, 17, 18);
console.log("after mutations:", scores);
</script>
</body>
</html>
کد کامل فایل اصلی جلسه:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>Functions in JavaScript</title>
</head>
<body>
<h1>Functions</h1>
<script>
function sum(a, b) {
return a + b;
}
function average(a, b) {
return (a + b) / 2;
}
const sum2 = (a, b) => {
return a + b;
};
const sum3 = (a, b) => a + b;
console.log(sum(10, 134));
console.log(average(10, 134));
console.log(sum2(3, 7));
console.log(sum3(3, 7));
</script>
</body>
</html>
کد کامل فایل اصلی جلسه:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>Iteration in JavaScript</title>
</head>
<body>
<h1>Loops & Array Methods</h1>
<script>
let scores = [10, 12, 4, 19, 18];
for (let i = 0; i < scores.length; i++) {
console.log(scores[i]);
}
let total = 0;
for (let i = 0; i < scores.length; i++) {
total += scores[i];
}
console.log("sum:", total);
function avg(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum / arr.length;
}
console.log("avg:", avg(scores));
scores.forEach(function (value, index) {
console.log("forEach", index, value);
});
let scores100 = scores.map((v) => v * 5);
console.log("map:", scores100);
let scoresTop10 = scores.filter((v) => v >= 10);
console.log("filter:", scoresTop10);
let reduced = scores.reduce((p, v) => p + v, 0);
console.log("reduce sum:", reduced);
console.log("reduce avg:", reduced / scores.length);
</script>
</body>
</html>
کد کامل فایل اصلی جلسه:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>Naming Conventions</title>
</head>
<body>
<h1>Naming Conventions</h1>
<!--
PascalCase → UserName, MyComponent (classes, React components)
camelCase → userName, getElementById (variables, functions)
UPPER_SNAKE → MAX_SIZE, API_KEY (global constants)
-->
<script>
const USER_NAME = "Ali";
let userName = "ali";
function getUserName() {
return userName;
}
console.log(USER_NAME, getUserName());
</script>
</body>
</html>
کد کامل فایل اصلی جلسه:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>Callback Functions</title>
</head>
<body>
<h1>Callback Functions</h1>
<script>
function calc(a, b, callback) {
let add = a + b;
let sub = a - b;
let mul = a * b;
let div = a / b;
callback({ add, sub, mul, div });
}
calc(10, 5, function (result) {
console.log(result.add);
console.log(result.sub);
console.log(result.mul);
console.log(result.div);
});
calc(10, 5, (result) => {
console.log("arrow callback", result);
});
</script>
</body>
</html>
کد کامل فایل اصلی جلسه:
پوشه تمرین جلسه JavaScript (1405-06-18)
اجرا:
node test.js
فایلهای HTML:
با VS Code + Live Server باز کنید
F12 → Console برای خروجی console.log
ترتیب:
test.js
01-introduction-to-javascript.html
02-variable.html
...
08-callback-function.html