You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
همانطور که میبینیم «عملگر + یگانه» اولویت `15` دارد که از عملگر جمع ( + دوگانه) با اولویت `12` بالاتر است. به همین دلیل است که در عبارت `"+apples + +oranges"` عملگرهای + یگانه پیش از علامت جمع اجرا میشوند.
208
+
همانطور که میبینیم «عملگر + یگانه» اولویت `14` دارد که از عملگر جمع ( + دوگانه) با اولویت `11` بالاتر است. به همین دلیل است که در عبارت `"+apples + +oranges"` عملگرهای + یگانه پیش از علامت جمع اجرا میشوند.
209
209
210
210
## مقداردهی
211
211
@@ -303,9 +303,9 @@ alert( n ); // 14
303
303
```js run
304
304
let n = 2;
305
305
306
-
n *= 3 + 5;
306
+
n *= 3 + 5; // بخش سمت راستی اول اجرا میشود درست مانند n *= 8
307
307
308
-
alert( n ); // 16 (یکسان است n *= 8، قسمت سمت راست اول ارزیابی میشود)
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/12-nullish-coalescing-operator/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -106,7 +106,7 @@ alert(height ?? 100); // 0
106
106
107
107
## اولویت
108
108
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` است.
110
110
111
111
این یعنی که درست مانند `||`، عملگر nullish coalescing `??` قبل از `=` و `?` ارزیابی میشود، اما بعد از بیشتر عملیاتها مانند `+`، `-` ارزیابی میشود.
@@ -208,6 +208,12 @@ showMessage("Ann"); // Ann: no text given
208
208
209
209
حالا اگر پارامتر `text` پاس داده نشود، مقدار `"no text given"` را میگیرد.
210
210
211
+
همچنین اگر پارامتر وجود داشته باشد نیز ممکن است مقدار پیشفرض قرار بگیرد، در صورتی که برابر با `undefined` باشد، مانند زیر:
212
+
213
+
```js
214
+
showMessage("Ann", undefined); // Ann: no text given
215
+
```
216
+
211
217
اینجا `"no text given"` یک رشته است، اما میتواند عبارت پیچیدهتری باشد، که تنها در حالتی ارزیابی و مقداردهی میشود که پارامتری وجود نداشته باشد. بنابراین این هم ممکن است:
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/05-testing-mocha/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -79,7 +79,7 @@ So, the development is *iterative*. We write the spec, implement it, make sure t
79
79
80
80
Let's see this development flow in our practical case.
81
81
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).
همانطور که از کد میبینیم، با توجه به تبدیل، `user` به رشتهای خودتعریفکننده یا مقداری پول تبدیل میشود. متد `user[Symbol.toPrimitive]` به تنهایی تمام موارد تبدیل را به عهده میگیرد.
134
134
135
-
136
135
## متد toString/valueOf
137
136
138
137
اگر `Symbol.toPrimitive` وجود نداشته باشد، سپس جاوااسکریپت سعی میکند که متدهای `toString` و `valueOf` را پیدا کند:
139
138
140
-
- برای جزء "string": `toString` و اگر این متد وجود نداشت، سپس `valueOf` (پس `toString` برای تبدیلهای رشتهای اولویت دارد).
139
+
- برای جزء `"string"`: `toString` و اگر این متد وجود نداشت، سپس `valueOf` (پس `toString` برای تبدیلهای رشتهای اولویت دارد).
141
140
- برای بقیه جزءها: `valueOf` و اگر این متد وجود نداشت، سپس `toString` (پس `valueOf` برای ریاضیات اولویت دارد).
142
141
143
142
متدهای `toString` و `valueOf` از زمانهای گذشته وجود دارند. آنها سمبل نیستند (سمبلها انقدر قدیمی نیستند) بلکه متدهای «معمولی» هستند که اسمی رشتهای دارد. آنها راهی جایگزین برای پیادهسازی تبدیل به «سبک قدیمی» را فراهم میکنند.
این متد دو آرگومان اضافی دارد که در [مستندات](mdn:js/String/localeCompare) مشخص شدهاند که به ما اجازه میدهند تا زبان را مشخص کنیم (به طور پیشفرض از شرایط فعلی بدست میآید، ترتیب حروف به زبان بستگی دارد) و قوانین اضافی را ایجاد کنیم مثل حساسیت بزرگی یا کوچکی حرف یا اینکه به یک صورت با `"a"` و `"á"` رفتار شود و غیره.
555
+
این متد دو آرگومان اضافی دارد که در [مستندات](mdn:js/String/localeCompare) مشخص شدهاند که به ما اجازه میدهند تا زبان را مشخص کنیم (به طور پیشفرض از شرایط فعلی بدست میآید، ترتیب حروف به زبان بستگی دارد) و قوانین اضافی را ایجاد کنیم مثل حساسیت بزرگی یا کوچکی حرف یا اینکه به یک صورت با `"a"` و `"á"` رفتار شود و غیره.
556
556
557
557
## داخلیها، Unicode
558
558
@@ -612,29 +612,29 @@ alert( '𝒳'.charCodeAt(1).toString(16) ); // dcb3, between 0xdc00 and 0xdfff
612
612
613
613
برای پشتیبانی از ترکیبات دلخواه، UTF-16 به ما اجازه میدهد که از چند کاراکتر Unicode استفاده کنیم: کاراکتر پایه که بعد از آن یک یا چند کاراکتر «علامت» میآید که آن را «زیبا میکند».
614
614
615
-
برای مثال، اگر ما یک حرف `S` داشته باشیم که بعد از آن کاراکتر خاص «نقطه بالا» آمده باشد (کد `\u0307`)، به صورت Ṡ نمایش داده میشود.
615
+
برای مثال، اگر ما یک حرف `S` داشته باشیم که بعد از آن کاراکتر خاص «نقطه بالا» آمده باشد (کد `\u0307`)، به صورت Ṡ نمایش داده میشود.
616
616
617
617
```js run
618
-
alert( 'S\u0307' ); //Ṡ
618
+
alert( 'S\u0307' ); //Ṡ
619
619
```
620
620
621
621
اگر ما نیاز به یک علامت اضافی در بالای حرف داشته باشیم (یا پایین آن)، مشکلی نیست، فقط کاراکتر علامت مورد نیاز را اضافه میکنیم.
622
622
623
-
برای مثال، اگر ما یک کاراکتر «نقطه پایین» (کد `\u0323`) را ضمیمه کنیم، سپس ما «حرف S با نقطههایی در بالا و پایین آن» خوهیم داشت: `Ṩ`.
623
+
برای مثال، اگر ما یک کاراکتر «نقطه پایین» (کد `\u0323`) را ضمیمه کنیم، سپس ما «حرف S با نقطههایی در بالا و پایین آن» خوهیم داشت: `Ṩ`.
624
624
625
625
برای مثال:
626
626
627
627
```js run
628
-
alert( 'S\u0307\u0323' ); //Ṩ
628
+
alert( 'S\u0307\u0323' ); //Ṩ
629
629
```
630
630
631
631
این روش انعطاف زیادی را مهیا میکند، اما یک مشکل جالب هم دارد: دو کاراکتر ممکن است که ظاهر یکسانی داشته باشند، اما با ترکیبات Unicode متفاوت نمایش داده شوند.
632
632
633
633
برای مثال:
634
634
635
635
```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
Copy file name to clipboardExpand all lines: 1-js/06-advanced-functions/01-recursion/01-sum-to/solution.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,4 +37,4 @@ alert( sumTo(100) );
37
37
38
38
راهحل حلقه از نظر سرعت دوم است. در هر دو نوع بازگشتی و حلقه ما اعداد یکسانی را جمع میزنیم. اما بازگشت، فراخوانیهای تودرتو و مدیریت پشته اجرا را دخیل میکند. همچنین منابع بیشتری مصرف میکند پس کندتر است.
39
39
40
-
پینوشت دوم: بعضی از موتورها از بهینهسازی «فراخوانی دنبالهدار» پشتیبانی میکنند: اگر یک فراخوانی بازگشتی دقیقا آخرین فراخوانی در تابع باشد (مانند `sumTo(100000)` بالا)، سپس تابع بیرونی نیازی نخواهد داشت که اجرا شدن را ادامه دهد پس موتور نیازی ندارد که زمینهاجرای آن را به یاد بسپارد. این موضوع بار را از دوش حافظه برمیدارد پس محاسبه `sumTo(100000)` ممکن میشود. اما اگر موتور جاوااسکریپت از بهینهسازی فراخوانی دنبالهدار پشتیبانی نکند (اکثر آنها پشتیبانی نمیکنند)، یک ارور ایجاد میشود: از حداکثر اندازه پشته گذشتیم، چون معمولا یک محدودیت برای کل اندازه پشته وجود دارد.
40
+
پینوشت دوم: بعضی از موتورها از بهینهسازی «فراخوانی دنبالهدار» پشتیبانی میکنند: اگر یک فراخوانی بازگشتی دقیقا آخرین فراخوانی در تابع باشد، سپس تابع بیرونی نیازی نخواهد داشت که اجرا شدن را ادامه دهد پس موتور نیازی ندارد که زمینهاجرای آن را به یاد بسپارد. این موضوع بار را از دوش حافظه برمیدارد پس محاسبه ممکن میشود. اما اگر موتور جاوااسکریپت از بهینهسازی فراخوانی دنبالهدار پشتیبانی نکند (اکثر آنها پشتیبانی نمیکنند)، یک ارور ایجاد میشود: از حداکثر اندازه پشته گذشتیم، چون معمولا یک محدودیت برای کل اندازه پشته وجود دارد.
Copy file name to clipboardExpand all lines: 2-ui/1-document/05-basic-dom-node-properties/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ The classes are:
28
28
29
29
-[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.
30
30
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.
32
32
33
33
-[CharacterData](https://dom.spec.whatwg.org/#interface-characterdata) -- an "abstract" class, inherited by:
34
34
-[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