Skip to content

Commit 8ff726f

Browse files
authored
Merge pull request #220 from javascript-tutorial/sync-1edb0a38
Sync with upstream @ 1edb0a3
2 parents 47df4fa + 9d5fc71 commit 8ff726f

19 files changed

Lines changed: 67 additions & 44 deletions

File tree

1-js/02-first-steps/08-operators/article.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -194,18 +194,18 @@ alert( +apples + +oranges ); // 5
194194
| اولویت | نام | علامت |
195195
|------------|------|------|
196196
| ... | ... | ... |
197-
| 15 | جمع یگانه | `+` |
198-
| 15 | تفریق یگانه | `-` |
199-
| 14 | بتوان رساندن | `**` |
200-
| 13 | ضرب | `*` |
201-
| 13 | تقسیم | `/` |
202-
| 12 | جمع | `+` |
203-
| 12 | تفریق | `-` |
197+
| 14 | جمع یگانه | `+` |
198+
| 14 | تفریق یگانه | `-` |
199+
| 13 | بتوان رساندن | `**` |
200+
| 12 | ضرب | `*` |
201+
| 12 | تقسیم | `/` |
202+
| 11 | جمع | `+` |
203+
| 11 | تفریق | `-` |
204204
| ... | ... | ... |
205205
| 2 | مقداردهی | `=` |
206206
| ... | ... | ... |
207207

208-
همانطور که می‌بینیم «عملگر + یگانه» اولویت `15` دارد که از عملگر جمع ( + دوگانه) با اولویت `12` بالاتر است. به همین دلیل است که در عبارت `"+apples + +oranges"` عملگرهای + یگانه پیش از علامت جمع اجرا می‌شوند.
208+
همانطور که می‌بینیم «عملگر + یگانه» اولویت `14` دارد که از عملگر جمع ( + دوگانه) با اولویت `11` بالاتر است. به همین دلیل است که در عبارت `"+apples + +oranges"` عملگرهای + یگانه پیش از علامت جمع اجرا می‌شوند.
209209

210210
## مقداردهی
211211

@@ -303,9 +303,9 @@ alert( n ); // 14
303303
```js run
304304
let n = 2;
305305
306-
n *= 3 + 5;
306+
n *= 3 + 5; // بخش سمت راستی اول اجرا می‌شود درست مانند n *= 8
307307
308-
alert( n ); // 16 (یکسان است n *= 8، قسمت سمت راست اول ارزیابی می‌شود)
308+
alert( n ); // 16
309309
```
310310

311311
## عملگر افزایش/کاهش

1-js/02-first-steps/12-nullish-coalescing-operator/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ alert(height ?? 100); // 0
106106
107107
## اولویت
108108
109-
اولویت عملگر `??` برابر با عملگر `||` است. اولویت آن‌ها در [جدول MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table) برابر با `4` است.
109+
اولویت عملگر `??` برابر با عملگر `||` است. اولویت آن‌ها در [جدول MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table) برابر با `3` است.
110110
111111
این یعنی که درست مانند `||`، عملگر nullish coalescing `??` قبل از `=` و `?` ارزیابی می‌شود، اما بعد از بیشتر عملیات‌ها مانند `+`، `-` ارزیابی می‌شود.
112112

1-js/02-first-steps/15-function-basics/article.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ function showMessage() {
2424

2525
```js
2626
function name(parameter1, parameter2, ... parameterN) {
27-
...body...
27+
// body
2828
}
2929
```
3030

@@ -208,6 +208,12 @@ showMessage("Ann"); // Ann: no text given
208208
209209
حالا اگر پارامتر `text` پاس داده نشود، مقدار `"no text given"` را می‌گیرد.
210210
211+
همچنین اگر پارامتر وجود داشته باشد نیز ممکن است مقدار پیش‌فرض قرار بگیرد، در صورتی که برابر با `undefined` باشد، مانند زیر:
212+
213+
```js
214+
showMessage("Ann", undefined); // Ann: no text given
215+
```
216+
211217
اینجا `"no text given"` یک رشته است، اما می‌تواند عبارت پیچیده‌تری باشد، که تنها در حالتی ارزیابی و مقداردهی می‌شود که پارامتری وجود نداشته باشد. بنابراین این هم ممکن است:
212218
213219
```js run

1-js/03-code-quality/05-testing-mocha/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ So, the development is *iterative*. We write the spec, implement it, make sure t
7979

8080
Let's see this development flow in our practical case.
8181

82-
The first step is already complete: we have an initial spec for `pow`. Now, before making the implementation, let's use few JavaScript libraries to run the tests, just to see that they are working (they will all fail).
82+
The first step is already complete: we have an initial spec for `pow`. Now, before making the implementation, let's use a few JavaScript libraries to run the tests, just to see that they are working (they will all fail).
8383

8484
## The spec in action
8585

1-js/04-object-basics/09-object-toprimitive/article.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,11 @@ alert(user + 500); // hint: default -> 1500
132132

133133
همانطور که از کد می‌بینیم، با توجه به تبدیل، `user` به رشته‌ای خودتعریف‌کننده یا مقداری پول تبدیل می‌شود. متد `user[Symbol.toPrimitive]` به تنهایی تمام موارد تبدیل را به عهده می‌گیرد.
134134

135-
136135
## متد toString/valueOf
137136

138137
اگر `Symbol.toPrimitive` وجود نداشته باشد، سپس جاوااسکریپت سعی می‌کند که متدهای `toString` و `valueOf` را پیدا کند:
139138

140-
- برای جزء "string": `toString` و اگر این متد وجود نداشت، سپس `valueOf` (پس `toString` برای تبدیل‌های رشته‌ای اولویت دارد).
139+
- برای جزء `"string"`: `toString` و اگر این متد وجود نداشت، سپس `valueOf` (پس `toString` برای تبدیل‌های رشته‌ای اولویت دارد).
141140
- برای بقیه جزءها: `valueOf` و اگر این متد وجود نداشت، سپس `toString` (پس `valueOf` برای ریاضیات اولویت دارد).
142141

143142
متدهای `toString` و `valueOf` از زمان‌های گذشته وجود دارند. آن‌ها سمبل نیستند (سمبل‌ها انقدر قدیمی نیستند) بلکه متدهای «معمولی» هستند که اسمی رشته‌ای دارد. آن‌ها راهی جایگزین برای پیاده‌سازی تبدیل به «سبک قدیمی» را فراهم می‌کنند.
@@ -225,7 +224,6 @@ alert(user + 500); // toString -> John500
225224

226225
همانطور که از قبل می‌دانیم، بسیاری از عملگرها و تابع‌ها تبدیل نوع داده را انجام می‌دهند، مثلا عملگر ضرب `*` عملوندها را به عدد تبدیل می‌کند.
227226

228-
<<<<<<< HEAD
229227
1. شیء به یک مقدار اصلی تبدیل می‌شود (با استفاده از قوانینی که بالاتر گفتیم).
230228
2. اگر برای محاسبات بعدی لازم باشد، مقدار اصلی حاصل باز هم تبدیل می‌شود.
231229

1-js/05-data-types/03-string/article.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ alert( str );
552552
alert( 'Österreich'.localeCompare('Zealand') ); // -1
553553
```
554554
555-
این متد دو آرگومان اضافی دارد که در [مستندات](mdn:js/String/localeCompare) مشخص شده‌اند که به ما اجازه می‌دهند تا زبان را مشخص کنیم (به طور پیش‌فرض از شرایط فعلی بدست می‌آید، ترتیب حروف به زبان بستگی دارد) و قوانین اضافی را ایجاد کنیم مثل حساسیت بزرگی یا کوچکی حرف یا اینکه به یک صورت با `"a"` و `""` رفتار شود و غیره.
555+
این متد دو آرگومان اضافی دارد که در [مستندات](mdn:js/String/localeCompare) مشخص شده‌اند که به ما اجازه می‌دهند تا زبان را مشخص کنیم (به طور پیش‌فرض از شرایط فعلی بدست می‌آید، ترتیب حروف به زبان بستگی دارد) و قوانین اضافی را ایجاد کنیم مثل حساسیت بزرگی یا کوچکی حرف یا اینکه به یک صورت با `"a"` و `"á"` رفتار شود و غیره.
556556
557557
## داخلی‌ها، Unicode
558558
@@ -612,29 +612,29 @@ alert( '𝒳'.charCodeAt(1).toString(16) ); // dcb3, between 0xdc00 and 0xdfff
612612
613613
برای پشتیبانی از ترکیبات دلخواه، UTF-16 به ما اجازه می‌دهد که از چند کاراکتر Unicode استفاده کنیم: کاراکتر پایه که بعد از آن یک یا چند کاراکتر «علامت» می‌آید که آن را «زیبا می‌کند».
614614
615-
برای مثال، اگر ما یک حرف `S` داشته باشیم که بعد از آن کاراکتر خاص «نقطه بالا» آمده باشد (کد `\u0307`)، به صورت نمایش داده می‌شود.
615+
برای مثال، اگر ما یک حرف `S` داشته باشیم که بعد از آن کاراکتر خاص «نقطه بالا» آمده باشد (کد `\u0307`)، به صورت نمایش داده می‌شود.
616616
617617
```js run
618-
alert( 'S\u0307' ); //
618+
alert( 'S\u0307' ); //
619619
```
620620
621621
اگر ما نیاز به یک علامت اضافی در بالای حرف داشته باشیم (یا پایین آن)، مشکلی نیست، فقط کاراکتر علامت مورد نیاز را اضافه می‌کنیم.
622622
623-
برای مثال، اگر ما یک کاراکتر «نقطه پایین» (کد `\u0323`) را ضمیمه کنیم، سپس ما «حرف S با نقطه‌هایی در بالا و پایین آن» خوهیم داشت: `Ṩ`.
623+
برای مثال، اگر ما یک کاراکتر «نقطه پایین» (کد `\u0323`) را ضمیمه کنیم، سپس ما «حرف S با نقطه‌هایی در بالا و پایین آن» خوهیم داشت: ``.
624624
625625
برای مثال:
626626
627627
```js run
628-
alert( 'S\u0307\u0323' ); // Ṩ
628+
alert( 'S\u0307\u0323' ); //
629629
```
630630
631631
این روش انعطاف زیادی را مهیا می‌کند، اما یک مشکل جالب هم دارد: دو کاراکتر ممکن است که ظاهر یکسانی داشته باشند، اما با ترکیبات Unicode متفاوت نمایش داده شوند.
632632
633633
برای مثال:
634634
635635
```js run
636-
let s1 = 'S\u0307\u0323'; // Ṩ ،نقطه بالا + نقطه پایین + S
637-
let s2 = 'S\u0323\u0307'; // Ṩ ،نقطه پایین + نقطه بالا + S
636+
let s1 = 'S\u0307\u0323'; // ،نقطه بالا + نقطه پایین + S
637+
let s2 = 'S\u0323\u0307'; // ،نقطه پایین + نقطه بالا + S
638638

639639
alert( `s1: ${s1}, s2: ${s2}` );
640640

1-js/05-data-types/05-array-methods/article.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,6 @@ let fruits = ['Apple', 'Orange', 'Apple']
264264

265265
alert( arr.indexOf('Apple') ); // 0 (Apple اولین)
266266
alert( arr.lastIndexOf('Apple') ); // 2 (Apple آخرین)
267-
```
268267

269268
````smart header="متد `includes` مقدار `NaN` را به درستی مدیریت می‌کند"
270269
یک تفاوت بسیار کوچک `includes` این است که این متد به درستی `NaN` را کنترل می‌کند، درست برعکس `indexOf`:

1-js/06-advanced-functions/01-recursion/01-sum-to/solution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,4 @@ alert( sumTo(100) );
3737

3838
راه‌حل حلقه از نظر سرعت دوم است. در هر دو نوع بازگشتی و حلقه ما اعداد یکسانی را جمع می‌زنیم. اما بازگشت، فراخوانی‌های تودرتو و مدیریت پشته اجرا را دخیل می‌کند. همچنین منابع بیشتری مصرف می‌کند پس کندتر است.
3939

40-
پی‌نوشت دوم: بعضی از موتورها از بهینه‌سازی «فراخوانی دنباله‌دار» پشتیبانی می‌کنند: اگر یک فراخوانی بازگشتی دقیقا آخرین فراخوانی در تابع باشد (مانند `sumTo(100000)` بالا)، سپس تابع بیرونی نیازی نخواهد داشت که اجرا شدن را ادامه دهد پس موتور نیازی ندارد که زمینه‌اجرای آن را به یاد بسپارد. این موضوع بار را از دوش حافظه برمی‌دارد پس محاسبه `sumTo(100000)` ممکن می‌شود. اما اگر موتور جاوااسکریپت از بهینه‌سازی فراخوانی دنباله‌دار پشتیبانی نکند (اکثر آنها پشتیبانی نمی‌کنند)، یک ارور ایجاد می‌شود: از حداکثر اندازه پشته گذشتیم، چون معمولا یک محدودیت برای کل اندازه پشته وجود دارد.
40+
پی‌نوشت دوم: بعضی از موتورها از بهینه‌سازی «فراخوانی دنباله‌دار» پشتیبانی می‌کنند: اگر یک فراخوانی بازگشتی دقیقا آخرین فراخوانی در تابع باشد، سپس تابع بیرونی نیازی نخواهد داشت که اجرا شدن را ادامه دهد پس موتور نیازی ندارد که زمینه‌اجرای آن را به یاد بسپارد. این موضوع بار را از دوش حافظه برمی‌دارد پس محاسبه ممکن می‌شود. اما اگر موتور جاوااسکریپت از بهینه‌سازی فراخوانی دنباله‌دار پشتیبانی نکند (اکثر آنها پشتیبانی نمی‌کنند)، یک ارور ایجاد می‌شود: از حداکثر اندازه پشته گذشتیم، چون معمولا یک محدودیت برای کل اندازه پشته وجود دارد.

1-js/11-async/02-promise-basics/article.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,6 @@ new Promise((resolve, reject) => {
268268
new Promise((resolve, reject) => {
269269
throw new Error("خطا");
270270
})
271-
<<<<<<< HEAD
272271
.finally(() => alert("Promise آماده است")) // این اول فعال می‌شود
273272
.catch(err => alert(err)); // <-- خطا را نمایش می‌دهد .catch
274273
```

2-ui/1-document/05-basic-dom-node-properties/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ The classes are:
2828

2929
- [Document](https://dom.spec.whatwg.org/#interface-document), for historical reasons often inherited by `HTMLDocument` (though the latest spec doesn't dictate it) -- is a document as a whole.
3030

31-
The `document` global object belongs exactly to this class. It servers as an entry point to the DOM.
31+
The `document` global object belongs exactly to this class. It serves as an entry point to the DOM.
3232

3333
- [CharacterData](https://dom.spec.whatwg.org/#interface-characterdata) -- an "abstract" class, inherited by:
3434
- [Text](https://dom.spec.whatwg.org/#interface-text) -- the class corresponding to a text inside elements, e.g. `Hello` in `<p>Hello</p>`.

0 commit comments

Comments
 (0)