◐ Shell
reader mode source ↗
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
File filter
Conversations
Jump to
Diff view
Apply and reload
Show whitespace
Diff view
Apply and reload
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
```js run no-beautify
let a = 1, b = 1;

alert( ++a ); // 2, پیشوند مقدار جدید را برمی‌گرداند
alert( b++ ); // 1, پسوند مقدار قدیمی را برمی‌گرداند

alert( a ); // 2, یکی اضافه شد
alert( b ); // 2, یکی اضافه شد
```

Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ null + 1 = 1 // (5)
undefined + 1 = NaN // (6)
" \t \n" - 2 = -2 // (7)
```
1. علامت جمع همراه با string `"" + 1` عدد `1` را به string تبدیل می‌کند: `"" + 1 = "1"` ، و سپس داریم: `"1" + 0` که همین قاعده برای آن نیز برقرار خواهد بود.
2. علامت تفریق (مانند اکثر عملگرهای ریاضیاتی) فقط با اعداد کار می‌کند. این عملگر string خالی را به `0` تبدیل می‌کند.
3. علامت جمع به همراه string ، باعث تبدیل عدد `5` به string و سپس چسباندن آن بهم می‌شود.
4. علامت تفریق همیشه مقدار را به عدد تبدیل می‌کند. در نتیجه `" -9 "` را به عدد `–9` تبدیل می‌کند (فاصله‌های خالی را نیز حذف می‌کند).
5. `null` پس از تبدیل به عدد `0` خواهد بود.
6. `undefined` پس از تبدیل به عدد `NaN` خواهد بود.
32 changes: 16 additions & 16 deletions 1-js/02-first-steps/08-operators/article.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# عملگرها

ما عملگرهای مختلفی را از زمان مدرسه به خاطر داریم. مانند جمع `+`، تفریق `-`، ضرب `*` و دیگر عملگرها.

در این فصل، ما با عملگرهای ساده شروع می‌کنیم، سپس روی موضوعات مخصوص جاوااسکریپت تمرکز می‌کنیم که توسط دروس محاسباتی در مدرسه پوشش داده نشده‌اند.

## اصطلاحات: unary (یگانه) - binary (دوگانه) - operand (عملوند)

پیش از ادامه بیایید مفهوم این اصطلاحات را بفهمیم.

Expand All @@ -19,14 +19,14 @@
*/!*
alert( x ); // -1، منفی کننده‌ی یگانه اعمال شد
```
- یک عملگر زمانی binary است که دو عملوند داشته باشد. همان عملگر منفی کننده در شکل دوگانه هم وجود دارد:

```js run no-beautify
let x = 1, y = 3;
alert( y - x ); // 2، عملگر دوگانه منفی که مقدارها را کم می‌کند
```

در اصل در اینجا ما در مورد دو عملگر مجزا که نماد یکسانی دارند صحبت کردیم: اولی عملگر یگانه منفی کننده که علامت عدد را برعکس می‌کرد و دیگری عملگر دوگانه تفریق که یک عدد را از دیگری کم می‌کرد.

## ریاضیات

Expand Down Expand Up @@ -105,13 +105,13 @@ alert( 2 + '1' ); // "21"
یک مثال پیچیده‌تر:

```js run
alert(2 + 2 + '1' ); // "41" and not "221"
```

اینجا، عملگرها یکی پس از دیگری کار می‌کنند. اولین `+` دو عدد را جمع می‌کند، پس `4` را برمی‌گرداند، سپس `+` دوم رشته‌ی `1` را به آن اضافه می‌کند، پس مثل این است که بنویسیم `'41' = '1' + 4`.

```js run
alert('1' + 2 + 2); // "122" and not "14"
```
اینجا، اولین عملوند یک string است، کامپایلر با دو عملوند دیگر هم مانند string رفتار می‌کند. `2` با `'1'` ادغام می‌شود، پس مانند این است که بنویسیم `"12" = 2 + '1'` و سپس `"122" = 2 + "12"`.

Expand Down Expand Up @@ -157,7 +157,7 @@ alert( +"" ); // 0
let apples = "2";
let oranges = "3";

alert( apples + oranges ); // "23", عملگر + دوگانه رشته‌ها را ادغام می‌کند
```

اگر خواستیم با آنها مانند عدد برخورد کنیم، باید آنها را به عدد تبدیل کرده و سپس آنها را جمع می‌کنیم:
Expand Down Expand Up @@ -290,8 +290,8 @@ n = n * 2;

```js run
let n = 2;
n += 5; // now n = 7 (same as n = n + 5)
n *= 2; // now n = 14 (same as n = n * 2)

alert( n ); // 14
```
Expand All @@ -305,7 +305,7 @@ let n = 2;

n *= 3 + 5;

alert( n ); // 16 (right part evaluated first, same as n *= 8)
```

## عملگر افزایش/کاهش
Expand All @@ -320,14 +320,14 @@ alert( n ); // 16 (right part evaluated first, same as n *= 8)

```js run no-beautify
let counter = 2;
counter++; // works the same as counter = counter + 1, but is shorter
alert( counter ); // 3
```
- **عملگر کاهش** `--` که یک واحد از عدد کم می‌کند:

```js run no-beautify
let counter = 2;
counter--; // works the same as counter = counter - 1, but is shorter
alert( counter ); // 1
```

Expand Down Expand Up @@ -361,7 +361,7 @@ alert(a); // *!*2*/!*

```js run
let counter = 1;
let a = counter++; // (*) changed ++counter to counter++

alert(a); // *!*1*/!*
```
Expand All @@ -376,7 +376,7 @@ alert(a); // *!*1*/!*
let counter = 0;
counter++;
++counter;
alert( counter ); // 2، خطوط بالا کار مشابهی انجام دادند
```
- اگر می‌خواهیم مقداری را افزایش داده *و* بلافاصله از نتیجه عملگر استفاده نماییم، باید از شکل پیشوندی استفاده کنیم:

Expand Down Expand Up @@ -405,7 +405,7 @@ alert( 2 * ++counter ); // 4

```js run
let counter = 1;
alert( 2 * counter++ ); // 2, because counter++ returns the "old" value
```

با اینکه از نظر فنی مشکلی ندارد ولی چنین روشی خوانایی کد را کاهش می‌دهد. اینکه یک خط کارهای مختلفی انجام می‌دهد مناسب نیست.
Expand Down Expand Up @@ -452,7 +452,7 @@ counter++;
let a = (1 + 2, 3 + 4);
*/!*

alert( a ); // 7 (the result of 3 + 4)
```

اولین عبارت `2 + 1` محاسبه می‌شود و جوابش دور ریخته می‌شود. سپس، `4 + 3` محاسبه می‌شود و به عنوان نتیجه بازگردانده می‌شود.
Expand Down
Toggle all file notes Toggle all file annotations