Update "Basic operators, maths" by mahdiHash · Pull Request #144 · javascript-tutorial/fa.javascript.info
@@ -1,10 +1,10 @@
# عملگرها
# عملگرهای ساده، ریاضیات
ما عملگرهای مختلفی را از زمان مدرسه به خاطر داریم. مانند جمع `+`، تفریق `-`، ضرب `*` و دیگر عملگرها.
در این فصل، ما با عملگرهای ساده شروع میکنیم، سپس روی موضوعات مخصوص جاوااسکریپت تمرکز میکنیم که توسط دروس محاسباتی در مدرسه پوشش داده نشدهاند.
## اصطلاحات: unary (یگانه) - binary (دوگانه) - operand (عملوند) ## اصطلاحات: یگانه (unary) - دوگانه (binary) - عملوند (operand)
پیش از ادامه بیایید مفهوم این اصطلاحات را بفهمیم.
Expand All
@@ -19,14 +19,14 @@
*/!*
alert( x ); // -1، منفی کنندهی یگانه اعمال شد
```
- یک عملگر زمانی binary است که دو عملوند داشته باشد. همان عملگر منفی کننده در شکل دوگانه هم وجود دارد:
- یک عملگر زمانی 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" alert(2 + 2 + '1' ); // "نتیجه "41" میشود نه "221 ```
اینجا، عملگرها یکی پس از دیگری کار میکنند. اولین `+` دو عدد را جمع میکند، پس `4` را برمیگرداند، سپس `+` دوم رشتهی `1` را به آن اضافه میکند، پس مثل این است که بنویسیم `'41' = '1' + 4`.
```js run alert('1' + 2 + 2); // "122" and not "14" alert('1' + 2 + 2); // "نتیجه "122" میشود نه "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", عملگر + دوگانه رشتهها را ادغام میکند 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) n += 5; // (یکسان است n = n + 5 با) است n = 7 حالا n *= 2; // (یکسان است n = n * 2 با) است n = 14 حالا
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) alert( n ); // 16 (یکسان است 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 counter++; // عمل میکند اما کوتاهتر است counter = counter + 1 درست مانند alert( counter ); // 3 ``` - **عملگر کاهش** `--` که یک واحد از عدد کم میکند:
```js run no-beautify let counter = 2; counter--; // works the same as counter = counter - 1, but is shorter counter--; // عمل میکند اما کوتاهتر است counter = counter - 1 درست مانند 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++ let a = counter++; // (*) تغییر دادیم counter++ را به ++counter
alert(a); // *!*1*/!* ```Expand All
@@ -376,7 +376,7 @@ alert(a); // *!*1*/!*
let counter = 0;
counter++;
++counter;
alert( counter ); // 2، خطوط بالا کار مشابهی انجام دادند
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 alert( 2 * counter++ ); // 2 ،مقدار «قدیمی» را برمیگرداند counter++ چون ```
با اینکه از نظر فنی مشکلی ندارد ولی چنین روشی خوانایی کد را کاهش میدهد. اینکه یک خط کارهای مختلفی انجام میدهد مناسب نیست.Expand Down
Expand Up
@@ -452,7 +452,7 @@ counter++;
let a = (1 + 2, 3 + 4);
*/!*
alert( a ); // 7 (the result of 3 + 4) alert( a ); // 7 (3 + 4 نتیجهی) ```
اولین عبارت `2 + 1` محاسبه میشود و جوابش دور ریخته میشود. سپس، `4 + 3` محاسبه میشود و به عنوان نتیجه بازگردانده میشود.Expand Down
ما عملگرهای مختلفی را از زمان مدرسه به خاطر داریم. مانند جمع `+`، تفریق `-`، ضرب `*` و دیگر عملگرها.
در این فصل، ما با عملگرهای ساده شروع میکنیم، سپس روی موضوعات مخصوص جاوااسکریپت تمرکز میکنیم که توسط دروس محاسباتی در مدرسه پوشش داده نشدهاند.
## اصطلاحات: unary (یگانه) - binary (دوگانه) - operand (عملوند) ## اصطلاحات: یگانه (unary) - دوگانه (binary) - عملوند (operand)
پیش از ادامه بیایید مفهوم این اصطلاحات را بفهمیم.
```js run no-beautify let x = 1, y = 3; alert( y - x ); // 2، عملگر دوگانه منفی که مقدارها را کم میکند ```
در اصل در اینجا ما در مورد دو عملگر مجزا که نماد یکسانی دارند صحبت کردیم: اولی عملگر یگانه منفی کننده که علامت عدد را برعکس میکرد و دیگری عملگر دوگانه تفریق که یک عدد را از دیگری کم میکرد. در اصل در مثالهای بالا دو عملگر مجزا داریم که نماد یکسانی دارند: اولی عملگر یگانه منفی کننده که علامت عدد را برعکس میکرد و دیگری عملگر دوگانه تفریق که یک عدد را از دیگری کم میکرد.
## ریاضیات
```js run alert(2 + 2 + '1' ); // "41" and not "221" alert(2 + 2 + '1' ); // "نتیجه "41" میشود نه "221 ```
اینجا، عملگرها یکی پس از دیگری کار میکنند. اولین `+` دو عدد را جمع میکند، پس `4` را برمیگرداند، سپس `+` دوم رشتهی `1` را به آن اضافه میکند، پس مثل این است که بنویسیم `'41' = '1' + 4`.
```js run alert('1' + 2 + 2); // "122" and not "14" alert('1' + 2 + 2); // "نتیجه "122" میشود نه "14 ``` اینجا، اولین عملوند یک string است، کامپایلر با دو عملوند دیگر هم مانند string رفتار میکند. `2` با `'1'` ادغام میشود، پس مانند این است که بنویسیم `"12" = 2 + '1'` و سپس `"122" = 2 + "12"`.
alert( apples + oranges ); // "23", عملگر + دوگانه رشتهها را ادغام میکند alert( apples + oranges ); // "23" ،عملگر + دوگانه رشتهها را ادغام میکند ```
اگر خواستیم با آنها مانند عدد برخورد کنیم، باید آنها را به عدد تبدیل کرده و سپس آنها را جمع میکنیم:
```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) n += 5; // (یکسان است n = n + 5 با) است n = 7 حالا n *= 2; // (یکسان است n = n * 2 با) است n = 14 حالا
alert( n ); // 14 ```
n *= 3 + 5;
alert( n ); // 16 (right part evaluated first, same as n *= 8) alert( n ); // 16 (یکسان است n *= 8، قسمت سمت راست اول ارزیابی میشود) ```
## عملگر افزایش/کاهش
```js run no-beautify let counter = 2; counter++; // works the same as counter = counter + 1, but is shorter counter++; // عمل میکند اما کوتاهتر است counter = counter + 1 درست مانند alert( counter ); // 3 ``` - **عملگر کاهش** `--` که یک واحد از عدد کم میکند:
```js run no-beautify let counter = 2; counter--; // works the same as counter = counter - 1, but is shorter counter--; // عمل میکند اما کوتاهتر است counter = counter - 1 درست مانند alert( counter ); // 1 ```
```js run let counter = 1; let a = counter++; // (*) changed ++counter to counter++ let a = counter++; // (*) تغییر دادیم counter++ را به ++counter
alert(a); // *!*1*/!* ```
```js run let counter = 1; alert( 2 * counter++ ); // 2, because counter++ returns the "old" value alert( 2 * counter++ ); // 2 ،مقدار «قدیمی» را برمیگرداند counter++ چون ```
با اینکه از نظر فنی مشکلی ندارد ولی چنین روشی خوانایی کد را کاهش میدهد. اینکه یک خط کارهای مختلفی انجام میدهد مناسب نیست.
alert( a ); // 7 (the result of 3 + 4) alert( a ); // 7 (3 + 4 نتیجهی) ```
اولین عبارت `2 + 1` محاسبه میشود و جوابش دور ریخته میشود. سپس، `4 + 3` محاسبه میشود و به عنوان نتیجه بازگردانده میشود.