Skip to content

Commit 66d4ed1

Browse files
committed
Fix conflicts and some lines
1 parent c9694bb commit 66d4ed1

8 files changed

Lines changed: 15 additions & 73 deletions

File tree

1-js/02-first-steps/05-types/article.md

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,15 @@ n = 12.345;
4646
alert( "not a number" / 2 ); // NaN، چنین تقسیمی اشتباه است
4747
```
4848

49-
<<<<<<< HEAD
50-
هر عملی بر روی `NaN` نتیجه `NaN` خواهد داشت:
51-
=======
52-
`NaN` is sticky. Any further mathematical operation on `NaN` returns `NaN`:
53-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
49+
`NaN` دشوار است. هر عمل ریاضیاتی روی `NaN` مقدار `NaN` را برمی‌گرداند:
5450

5551
```js run
5652
alert( NaN + 1 ); // NaN
5753
alert( 3 * NaN ); // NaN
5854
alert( "not a number" / 2 - 1 ); // NaN
5955
```
6056

61-
<<<<<<< HEAD
62-
در نتیجه اگر `NaN` در عملیات ریاضیاتی‌ای وجود داشته باشد، بر روی تمام معادله تاثیر می‌گذارد (نتیجه معادله برابر `NaN` خواهد بود).
63-
=======
64-
So, if there's a `NaN` somewhere in a mathematical expression, it propagates to the whole result (there's only one exception to that: `NaN ** 0` is `1`).
65-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
57+
در نتیجه اگر جایی در عبارت ریاضیاتی `NaN`وجود داشته باشد، بر روی تمام معادله تاثیر می‌گذارد (فقط یک استثنا برای آن وجود دارد: `NaN ** 0` برابر با `1` است).
6658

6759
```smart header="عملیات ریاضیاتی امن هستند"
6860
عملیات ریاضی در جاوااسکریپت امن است. ما هر نوع عملی می‌توانیم انجام دهیم مانند تقسیم بر صفر، رفتار کردن با رشته‌های غیر عددی همانند اعداد و غیره.

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,7 @@ alert(height ?? 100); // 0
106106
107107
## اولویت
108108
109-
<<<<<<< HEAD
110-
اولویت عملگر `??` تقریبا برابر با عملگر `||` است، اما کمتر. اولویت آن در [جدول MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table) برابر با `5` است، در حالی که اولویت `||` برابر با `6` است.
111-
=======
112-
The precedence of the `??` operator is the same as `||`. They both equal `4` in the [MDN table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table).
113-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
109+
اولویت عملگر `??` برابر با عملگر `||` است. اولویت آن‌ها در [جدول MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table) برابر با `4` است.
114110
115111
این یعنی که درست مانند `||`، عملگر nullish coalescing `??` قبل از `=` و `?` ارزیابی می‌شود، اما بعد از بیشتر عملیات‌ها مانند `+`، `-` ارزیابی می‌شود.
116112

1-js/02-first-steps/16-function-expressions/article.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ function sayHi() {
1212

1313
یک سینتکس دیگر هم برای ساخت تابع وجود دارد که *Function Expression* نامیده می‌شود.
1414

15-
<<<<<<< HEAD
1615
این سینتکس به ما این امکان را می‌دهد که بین هر عبارتی یک تابع جدید بسازیم.
17-
=======
18-
It allows us to create a new function in the middle of any expression.
19-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
2016

2117
برای مثال:
2218

1-js/02-first-steps/17-arrow-functions-basics/article.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,7 @@ let sum = function(a, b) {
3333
alert(sum(1, 2)); // 3
3434
```
3535

36-
<<<<<<< HEAD
3736
همانطور که می‌بینید `(a, b) => a + b` بدین معنی‌ست که این تابع دو آرگومان با نام‌های `a` و `b` می‌پذیرد. و هنگام اجرا شدن، مقدار `a + b` را حساب می‌کند و نتیجه را برمی‌گرداند.
38-
=======
39-
As you can see, `(a, b) => a + b` means a function that accepts two arguments named `a` and `b`. Upon the execution, it evaluates the expression `a + b` and returns the result.
40-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
4137

4238
- اگر فقط یک آرگومان داشته باشیم می‌توانیم پرانتزهای دور آرگومان را حذف کنیم و کد را از این هم کوتاه‌تر کنیم.
4339

@@ -88,11 +84,7 @@ welcome();
8884
let sum = (a, b) => { // کمانک یک تابع چندخظی را دربرمی‌گیرد
8985
let result = a + b;
9086
*!*
91-
<<<<<<< HEAD
92-
return result; // اگر از کمانک استفاده کنیم باید از return استفاده کنیم
93-
=======
94-
return result; // if we use curly braces, then we need an explicit "return"
95-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
87+
return result; // استفاده کنیم "return" اگر از آکولاد استفاده کنیم، سپس باید صراحتا از
9688
*/!*
9789
};
9890

1-js/04-object-basics/07-optional-chaining/article.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,7 @@ alert(user.address.street); // !خطا
2525

2626
ولی در بسیاری از موارد عملی، ما ترجیح می‌دهیم به جای خطا، ‍`undefined` را دریافت کنیم (به معنای "بدون خیابان").
2727

28-
<<<<<<< HEAD
29-
...و مثالی دیگر، در توسعه وب، ما می‌توانیم یک شیء که با یک المان در صفحه مطابقت دارد را با استفاده از یک متد خاص، مانند `document.querySelector('.elem')` بگیریم و این متد هنگامی که چنین المانی وجود نداشته باشد `null` را برمی‌گرداند:
30-
=======
31-
...and another example. In Web development, we can get an object that corresponds to a web page element using a special method call, such as `document.querySelector('.elem')`, and it returns `null` when there's no such element.
32-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
28+
...و مثالی دیگر. در توسعه وب، ما می‌توانیم یک شیء که با یک المان در صفحه مطابقت دارد را با استفاده از یک متد خاص، مانند `document.querySelector('.elem')` بگیریم و این متد هنگامی که چنین المانی وجود نداشته باشد `null` را برمی‌گرداند:
3329

3430
```js run
3531
// document.querySelector('.elem') خواهد شد اگر المنت وجود نداشته باشد null برابر با

1-js/05-data-types/10-destructuring-assignment/article.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,9 @@
55
- شیءها به ما این امکان را می‌دهند تا چیزی بسازیم که المان‌های داده را به واسطه کلید ذخیره کند.
66
- آرایه‌ها به ما امکان جمع‌آوری المان‌های داده را در لیستی مرتب می‌دهند.
77

8-
<<<<<<< HEAD
9-
اگرچه، زمانی که ما آنها را به تابع می‌دهیم، ممکن است که نیازی به کل یک شیء/آرایه نباشد. ممکن است تنها قطعه‌های تکی نیاز باشد.
8+
اگرچه، زمانی که ما آن‌ها را به تابع می‌دهیم، ممکن است که نیازی به کل یک شیء/آرایه نباشد. شاید تنها قطعه‌های تکی نیاز باشد.
109

1110
*مقداردهیِ تجزیه‌کننده‌ی ساختار (Destructuring assignment)* یک سینتکس خاص است که به ما امکان می‌دهد تا آرایه‌ها یا شیءها را درون چند متغیر «پخش کنیم» چون بعضی اوقات این موضوع کار را راحت‌تر می‌کند.
12-
=======
13-
Although, when we pass those to a function, it may need not be an object/array as a whole. It may need individual pieces.
14-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
1511

1612
تخریب ساختار همچنین با تابع‌های پیچیده که تعداد زیادی پارامتر، مقدارهای پیش‌فرض و... دارند هم به خوبی کار می‌کند. به زودی آن را خواهیم دید.
1713

1-js/11-async/01-callbacks/article.md

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -164,14 +164,9 @@ loadScript("/my/script.js", function(error, script) {
164164

165165
## هرم عذاب
166166

167-
<<<<<<< HEAD
168-
در نگاه اول این روش برای نوشتن کدهای ناهمگام پایدار بنظر میرسد. که واقعا هم این چنین است ولی برای نهایتا یک یا دو فراخوان تودرتو!!
169-
اما برای چندین عمل ناهمگام که یکی پس از دیگری اتفاق میفتد چیزی شبیه به این خواهیم داشت:
170-
=======
171-
At first glance, it looks like a viable approach to asynchronous coding. And indeed it is. For one or maybe two nested calls it looks fine.
167+
در نگاه اول این روش برای نوشتن کدهای ناهمگام پایدار بنظر می‌رسد. که واقعا هم این چنین است. برای نهایتا یک یا دو فراخوانی تودرتو خوب بنظر می‌رسد.
172168

173-
But for multiple asynchronous actions that follow one after another, we'll have code like this:
174-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
169+
اما برای چندین عمل ناهمگام که یکی پس از دیگری اتفاق می‌افتد کدی شبیه به این خواهیم داشت:
175170

176171
```js
177172
loadScript("1.js", function(error, script) {
@@ -199,20 +194,11 @@ loadScript("1.js", function(error, script) {
199194
});
200195
```
201196
در قطعه کد بالا داریم:
202-
1. `1.js`را بارگذاری میکنیم سپس اگر خطایی نداشت
203-
2. `2.js`را بارگذاری میکنیم سپس اگر خطایی نداشت
204-
3. `3.js` را بارگذاری میکنیم سپس اگر خطایی نداشت -- کار دیگری انجام میدهیم`(*)`
197+
1. `1.js`را بارگذاری می‌کنیم سپس اگر خطایی نداشت
198+
2. `2.js`را بارگذاری می‌کنیم سپس اگر خطایی نداشت
199+
3. `3.js` را بارگذاری می‌کنیم سپس اگر خطایی نداشت -- کار دیگری انجام می‌دهیم`(*)`
205200

206-
<<<<<<< HEAD
207-
هرچقدر فراخوانی های ما تودرتو باشند کدهای مارا عمیقتر و غیرقابل فهم و مدیریت میکنند مخصوصا اگر به جای ... ها کدهای واقعی داشته باشیم که خود شامل حلقه ها و شرط ها و هر جمله دیگری هستند.
208-
=======
209-
In the code above:
210-
1. We load `1.js`, then if there's no error...
211-
2. We load `2.js`, then if there's no error...
212-
3. We load `3.js`, then if there's no error -- do something else `(*)`.
213-
214-
As calls become more nested, the code becomes deeper and increasingly more difficult to manage, especially if we have real code instead of `...` that may include more loops, conditional statements and so on.
215-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
201+
هرچقدر فراخوانی‌ها بیشتر تودرتو می‌شوند، کدها عمیق‌تر و برای مدیریت دشوارتر می‌شوند مخصوصا اگر به جای `...` کدهای واقعی داشته باشیم که خود ممکن است شامل حلقه‌ها و شرط‌ها و هر چیز دیگری باشند.
216202

217203
که معمولا به آن "جهنم فراخوانی" (callback-hell / pyramid of doom) میگویند.
218204

@@ -275,15 +261,9 @@ function step3(error, script) {
275261
}
276262
}
277263
```
278-
همینجوری که مشاهده میکنید نتیجه تغییری نکرد ولی از تودرتو بودن فراخوانی ها با تعریف کردن توابع به صورت جداگانه برای هر مرحله از تودرتو بودن عمیق جلوگیری کردیم.
279-
280-
<<<<<<< HEAD
281-
این روش کار میکند ولی کدش تکه تکه و جدا از هم است که خواندن آن را سخت میکند. همانطور که احتمالا دیدید لازم است در حین خواندن از جایی به جای دیگر بپرید. این طور اصلا راحت نیست مخصوصا اگر به کد آشنا نباشید و ندانید باید برای ادامه کد کجا را بخوانید.
282-
=======
283-
See? It does the same thing, and there's no deep nesting now because we made every action a separate top-level function.
264+
همانطور که مشاهده می‌کنید نتیجه تغییری نکرد ولی از تودرتو بودن فراخوانی‌ها با تعریف کردن توابع به صورت جداگانه برای هر مرحله از تودرتو بودن عمیق جلوگیری کردیم.
284265

285-
It works, but the code looks like a torn apart spreadsheet. It's difficult to read, and you probably noticed that one needs to eye-jump between pieces while reading it. That's inconvenient, especially if the reader is not familiar with the code and doesn't know where to eye-jump.
286-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
266+
این روش کار می‌کند ولی کدش تکه تکه و جدا از هم است. خواندن آن دشوارتر است و احتمالا متوجه شدید که لازم است در حین خواندن از جایی به جای دیگر بپرید. اینگونه اصلا مناسب نیست مخصوصا اگر به کد آشنا نباشید و ندانید برای ادامه باید کجای کد را بخوانید.
287267

288268
همچنین توابعِ `step*` فقط یکبار استفاده میشوند و فقط برای جلوگیری از بوجود امدن جهنم فراخوانی و تودرتویی بیش از حد تعریف شده اند که باعث بی نظمی زیادی در کد میشوند.
289269

2-ui/3-event-details/1-mouse-events-basics/article.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,9 @@
3939
```online
4040
روی دکمه زیر کلیک کنید تا رویدادها را ببینید. دابل کلیک را هم امتحان کنید.
4141
42-
<<<<<<< HEAD
43-
در قسمت آزمایشی زیر همه رویدادها چاپ می‌شوند، و اگر بیش از ۱ ثانیه فاصله زمانی بین آنها باشد توسط یک خط افقی جدا می‌شوند.
42+
در قسمت آزمایشی زیر همه رویدادهای موس (mouse) چاپ می‌شوند، و اگر بیش از ۱ ثانیه فاصله زمانی بین آن‌ها باشد، توسط یک خط افقی جدا می‌شوند.
4443
4544
همچنین می‌توانیم یک خاصیت `button` مشاهده کنیم که به ما این امکان را می‌دهد تا کلید موس را شناسایی کنیم که در قسمت پایین شرح داده شده.
46-
=======
47-
On the teststand below, all mouse events are logged, and if there is more than a 1 second delay between them, they are separated by a horizontal rule.
48-
49-
Also, we can see the `button` property that allows us to detect the mouse button; it's explained below.
50-
>>>>>>> bae0ef44d0208506f6e9b7f3421ee640ab41af2b
5145
5246
<input onmousedown="return logMouse(event)" onmouseup="return logMouse(event)" onclick="return logMouse(event)" oncontextmenu="return logMouse(event)" ondblclick="return logMouse(event)" value="با کلید راست یا چپ موس روی من کلیک کنید" type="button"> <input onclick="logClear('test')" value="Clear" type="button"> <form id="testform" name="testform"> <textarea style="font-size:12px;height:150px;width:360px;"></textarea></form>
5347
```

0 commit comments

Comments
 (0)