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
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/16-function-expressions/article.md
+3-35Lines changed: 3 additions & 35 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -144,21 +144,13 @@ function showCancel() {
144
144
ask("آیا موافق هستید؟", showOk, showCancel);
145
145
```
146
146
147
-
<<<<<<< HEAD
148
-
در عمل، چنین تابع هایی بسیار مفید هستند. تفاوت اصلی بین یک `ask` در زندگی واقعی و مثال بالا در این است که تابعها در زندگی واقعی از راههای پیچیدهتری نسبت به یک `confirm` ساده برای تعامل با کاربر استفاده استفاده می کنند. در مرورگر، چنین تابعهایی معمولا یک پنچره سوال زیبا را طرح میکنند. اما آن یک داستان دیگر است.
149
-
=======
150
-
In practice, such functions are quite useful. The major difference between a real-life `ask` and the example above is that real-life functions use more complex ways to interact with the user than a simple `confirm`. In the browser, such functions usually draw a nice-looking question window. But that's another story.
151
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
147
+
در عمل، چنین تابع هایی بسیار مفید هستند. تفاوت اصلی بین یک `ask` در زندگی واقعی و مثال بالا در این است که تابعها در زندگی واقعی از راههای پیچیدهتری نسبت به یک `confirm` ساده برای تعامل با کاربر استفاده میکنند. در مرورگر، چنین تابعهایی معمولا یک پنچره پرسش زیبا را ایجاد میکنند. اما آن یک داستان دیگر است.
152
148
153
149
**آرگومانهای `showOk` و `showCancel` داخل `ask`*callback functions* یا فقط *callbacks* نامیده میشوند.**
154
150
155
151
ایده اینطور است که ما یک تابع را میدهیم و از آن توقع داریم که بعدا اگر نیاز شد "دوباره صدا زده شود". در مورد ما، `showOk` تبدیل به callback برای جواب "yes" میشود، و `showCancel` برای چواب "no".
156
152
157
-
<<<<<<< HEAD
158
-
ما می توانیم از Function Expressions برای نوشتن بسیار کوتاهتر همان تابع استفاده کنیم:
159
-
=======
160
-
We can use Function Expressions to write an equivalent, shorter function:
161
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
153
+
ما می توانیم از Function Expressions برای نوشتن همان تابع به صورت بسیار کوتاهتر استفاده کنیم:
162
154
163
155
```js run no-beautify
164
156
functionask(question, yes, no) {
@@ -194,23 +186,15 @@ ask(
194
186
195
187
اول، سینتکس: چگونه داخل کد بین آنها فرق قائل شویم.
196
188
197
-
<<<<<<< HEAD
198
-
-*Function Declaration:* یک تابع است، که به عنوان یک دستور جدا، در کد اصلی تعریف میشود.
199
-
=======
200
-
-*Function Declaration:* a function, declared as a separate statement, in the main code flow:
201
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
189
+
-*Function Declaration:* یک تابع است، که به عنوان یک دستور جدا، در کد اصلی تعریف میشود.
202
190
203
191
```js
204
192
// Function Declaration
205
193
functionsum(a, b) {
206
194
return a + b;
207
195
}
208
196
```
209
-
<<<<<<< HEAD
210
197
-*Function Expression:* یک تابع است، که در داخل یک عبارت یا داخل یک ساختار سینتکس دیگر ساخته میشود. اینجا، تابع سمت راست "عبارت تخصیص دادن"`=` ساخته شده است.
211
-
=======
212
-
-*Function Expression:* a function, created inside an expression or inside another syntax construct. Here, the function is created on the right side of the "assignment expression" `=`:
213
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
214
198
215
199
```js
216
200
// Function Expression
@@ -307,29 +291,18 @@ if (age < 18) {
307
291
welcome(); // \ (اجرا میشود)
308
292
*/!*
309
293
// |
310
-
<<<<<<<HEAD
311
294
function welcome() { // |
312
295
alert("سلام!"); // | Function Declaration در دسترس است
313
296
} // | هرجایی از بلوکی که داخل آن تعریف شده است
314
-
=======
315
-
functionwelcome() { // |
316
-
alert("Hello!"); // | Function Declaration is available
317
-
} // | everywhere in the block where it's declared
318
-
>>>>>>>7000ede297bfd688f9a3767e8ca43abd9242f322
319
297
// |
320
298
*!*
321
299
welcome(); // / (اجرا میشود)
322
300
*/!*
323
301
324
302
} else {
325
303
326
-
<<<<<<<HEAD
327
304
function welcome() {
328
305
alert("درود!");
329
-
=======
330
-
functionwelcome() {
331
-
alert("Greetings!");
332
-
>>>>>>>7000ede297bfd688f9a3767e8ca43abd9242f322
333
306
}
334
307
}
335
308
@@ -386,13 +359,8 @@ welcome(); // الان درست است
386
359
```
387
360
388
361
389
-
<<<<<<< HEAD
390
362
```smart header="چه زمانی Function Declaration را انتخاب کنیم و چه زمانی Function Expression؟"
391
363
به عنوان یک قاعده کلی، زمانی که ما نیاز به تعریف یک تابع داریم، اولین چیزی که باید سراغ آن برویم سینتکس Function Declaration است. آن به ما آزادی بیشتری برای سازماندهی کردن کد مان به ما میدهد، چون ما میتوانیم چنین تابعهایی را قبل از اینکه تعریف شوند صدا بزنیم.
392
-
=======
393
-
```smart header="When to choose Function Declaration versus Function Expression?"
394
-
As a rule of thumb, when we need to declare a function, the first thing to consider is Function Declaration syntax. It gives more freedom in how to organize our code, because we can call such functions before they are declared.
395
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
396
364
397
365
همچنین آن برای خوانایی نیز بهتر است، چون پیدا کردن `functionf(...) {...}` در کد راحت تر است از `letf=function(...) {...}`. Function Declarationها "چشم نوازتر" هستند.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/18-javascript-specials/article.md
+1-14Lines changed: 1 addition & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -55,11 +55,7 @@ for(;;) {
55
55
56
56
این دستور میتواند در ابتدای یک فایل جاوااسکریپت یا ابتدای یک تابع نوشته شود.
57
57
58
-
<<<<<<< HEAD
59
58
بدون نوشتن `"use strict"` هم کد ما کار میکند، ولی بعضی چیزها در حالت قدیمی خود عمل میکنند. ما معمولاً رفتار مدرن آنها را ترجیح میدهیم.
60
-
=======
61
-
Without `"use strict"`, everything still works, but some features behave in the old-fashioned, "compatible" way. We'd generally prefer the modern behavior.
62
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
63
59
64
60
بعضی از ویژگیهای مدرن جاوااسکریپت (مثل کلاسها که بعداً به آن میرسیم) به صورت خودکار و بدون اینکه نیازی باشد `"use strict"` را بنویسیم کد را در حالت strict اجرا میکنند.
: دو نوع مقداردهی داریم: مقداردهی معمولی مثل `a = b` و مقداردهی ترکیبی مثل `a *= 2`.
149
145
150
-
<<<<<<< HEAD
151
146
بیتی (Bitwise)
152
147
: عملگرهای بیتی با اعداد 32 بیتی در پایینترین سطح یعنی بیت کار میکنند: زمانی که به آنها نیاز داشتید به [مستندات](mdn:/JavaScript/Guide/Expressions_and_Operators#Bitwise) مراجعه کنید.
153
-
=======
154
-
Bitwise
155
-
: Bitwise operators work with 32-bit integers at the lowest, bit-level: see the [docs](mdn:/JavaScript/Guide/Expressions_and_Operators#bitwise_operators) when they are needed.
156
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
157
148
158
149
شرطی (Conditional)
159
150
: تنها اپراتور 3 پارامتری: `cond ? resultA : resultB`. اگر `cond` truthy باشد، `resultA` را برمیگرداند، در غیر این صورت `resultB`.
@@ -265,11 +256,7 @@ switch (age) {
265
256
3. تابع پیکانی (Arrow Function)
266
257
267
258
```js
268
-
<<<<<<< HEAD
269
-
// :عبارت سمت راست برمیگردد
270
-
=======
271
-
// expression on the right side
272
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
259
+
// عبارت سمت راست
273
260
let sum = (a, b) => a + b;
274
261
275
262
// یا مدل چند خطی با {...}، که در این حالت باید return :هم بنویسید
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/03-comments/article.md
+10-13Lines changed: 10 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -138,25 +138,22 @@ function pow(x, n) {
138
138
}
139
139
```
140
140
141
-
<<<<<<< HEAD
142
141
چنین یادداشت هایی به ما امکان می دهد بدون نگاه کردن به کد ، هدف از تابع را بفهمیم و از آن به روش صحیح استفاده کنیم.
143
-
=======
144
-
Such comments allow us to understand the purpose of the function and use it the right way without looking in its code.
145
142
146
-
By the way, many editors like [WebStorm](https://www.jetbrains.com/webstorm/)can understand them as well and use them to provide autocomplete and some automatic code-checking.
143
+
راستی، بسیاری از ویراستارها مانند [WebStorm](https://www.jetbrains.com/webstorm/)میتوانند آنها را متوجه شوند و از آنها برای فراهم کردن تکمیل خودکار و بعضی بررسی خودکار کدهای استفاده کنند.
147
144
148
-
Also, there are tools like [JSDoc 3](https://github.com/jsdoc/jsdoc)that can generate HTML-documentation from the comments. You can read more information about JSDoc at<https://jsdoc.app>.
145
+
همچنین، ابزارهایی مانند [JSDoc 3](https://github.com/jsdoc/jsdoc)وجود دارند که میتوانند از یادداشتها مستنداتی در غالب HTML تولید کنند. شما میتوانید درباره JSDoc در<https://jsdoc.app> بیشتر اطلاعات کسب کنید.
149
146
150
-
Why is the task solved this way?
151
-
: What's written is important. But what's *not* written may be even more important to understand what's going on. Why is the task solved exactly this way? The code gives no answer.
152
147
153
-
If there are many ways to solve the task, why this one? Especially when it's not the most obvious one.
148
+
چرا تمرین اینگونه حل شد؟
149
+
: چیزی که نوشته شده است مهم است. اما برای فهمیدن اینکه چه چیزی در حال رخ دادن است شاید چیزی که نوشته *نشده* است مهمتر باشد. چرا این تمرین دقیقا به این روش حل شد؟ قطعه کد جوابی نمیدهد.
154
150
155
-
Without such comments the following situation is possible:
156
-
1. You (or your colleague) open the code written some time ago, and see that it's "suboptimal".
157
-
2. You think: "How stupid I was then, and how much smarter I'm now", and rewrite using the "more obvious and correct" variant.
158
-
3. ...The urge to rewrite was good. But in the process you see that the "more obvious" solution is actually lacking. You even dimly remember why, because you already tried it long ago. You revert to the correct variant, but the time was wasted.
159
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
151
+
اگر راههای زیادی برای حل این تمرین وجود دارد، چرا این یکی؟ خصوصا وقتی این راهحل واضحترین آنها نیست.
152
+
153
+
بدون چنین یادداشتهایی موقعیت زیر احتمال رخداد دارد:
154
+
1. شما (یا همکار شما) کدی که چند وقت پیش نوشته شده است را باز میکنید و میبینید که این کد «زیرمجموعه« است.
155
+
2. شما اینطور فکر میکنید: «چقدر آن زمان احمق وبدم و چقدر الان باهوشتر هستم» و کد با به روش «واضحتر و درستتر» بازنویسی میکنید.
156
+
3. ...اصرار به بازنویسی خوب بود. اما در حین پروسه میبینید که روش «واضحتر» در واقع کمبود دارد. شما به سختی دلیل آن را به یاد میآورید چون خیلی وقت پیش آن را امتحان کردید. شما برمیگردید که این نوع کد نوشته شده را اصلاح کنید اما زمان هدر رفته.
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/06-polyfills/article.md
-24Lines changed: 0 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,11 +5,7 @@
5
5
6
6
تیمهای مسئول موتورهای جاوااسکریپت تصمیم میگیرند کدام یک را اول پیادهسازی کنند. ممکن است تصمیم بگیرند پیشنهادهایی که هنوز بهصورت پیشنویس هستند را اول پیادهسازی کنند و پیشنهادهایی که در مرحلهٔ تشخیص هستند را به بعدتر موکول کنند، به دلیل اینکه کمتر جالب هستند و یا فقط سختتر هستند.
7
7
8
-
<<<<<<< HEAD
9
8
پس کاملا طبیعی است که یک موتور فقط بخشی از یک استاندارد را پیادهسازی کند.
10
-
=======
11
-
So it's quite common for an engine to implement only part of the standard.
12
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
13
9
14
10
یک صفحهی خوب برای این که ببینید در حال حاضر چه چیزهایی پشتیبانی میشود اینجاست <https://kangax.github.io/compat-table/es6/> (خیلی بزرگ است، ما چیزهای زیادی برای مطالعه داریم).
معمولا توسعهدهنده ترنسپایلر را روی کامپیوتر خودش اجرا میکند و سپس کد transpileشده را روی سرور deploy میکند.
46
42
47
-
<<<<<<< HEAD
48
43
حالا که صحبتش شد، بهتر است بدانید [Babel](http://babeljs.io/) یکی از برجستهترین ترنسپایلرها است.
49
44
50
45
سیستمهای build پروژه مدرن مثل [webpack](https://webpack.js.org/) این امکان را میدهند که بعد از هر بار تغییر کد، ترنسپایلر بهصورت اتوماتیک اجرا شود و برای همین ادغام کردن آن در روند توسعه کار بسیار سادهای است.
51
-
=======
52
-
Speaking of names, [Babel](https://babeljs.io) is one of the most prominent transpilers out there.
53
-
54
-
Modern project build systems, such as [webpack](https://webpack.js.org/), provide a means to run a transpiler automatically on every code change, so it's very easy to integrate into the development process.
55
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
56
46
57
47
## پلیفیلها
58
48
@@ -79,34 +69,20 @@ if (!Math.trunc) { // اگر چنین تابعی وجود ندارد
79
69
}
80
70
```
81
71
82
-
<<<<<<< HEAD
83
72
جاوااسکریپت یک زبان بهشدت داینامیک است. اسکریپتها میتوانند هر تابعی را تغییر دهند یا اضافه کنند. حتی تابعهای built-in.
84
73
85
74
دو کتابخانه جالب پلیفیلها:
86
75
- [core js](https://github.com/zloirock/core-js) که از چیزهای زیادی پشتیبانی میکند و اجازه میدهد فقط فیچرهای مورد نیاز خود را اضافه کنید.
87
76
- [polyfill.io](http://polyfill.io) سرویسی که یک اسکریپت با پلیفیلها ارائه میدهد. بسته به فیچرها و مرورگر کاربر.
88
-
=======
89
-
JavaScript is a highly dynamic language. Scripts may add/modify any function, even built-in ones.
90
-
91
-
Two interesting polyfill libraries are:
92
-
- [core js](https://github.com/zloirock/core-js) that supports a lot, allows to include only needed features.
93
-
- [polyfill.io](http://polyfill.io) service that provides a script with polyfills, depending on the features and user's browser.
94
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
95
77
96
78
97
79
## خلاصه
98
80
99
81
در این فصل ما میخواهیم به شما انگیزه بدهیم تا بروید و فیچرهای جدید زبان را یاد بگیرید. حتی اگر هنوز توسط موتورهای جاوااسکریپت بهخوبی پشتیبانی نمیشوند.
100
82
101
-
<<<<<<< HEAD
102
83
فراموش نکنید که از یک ترنسپایلر (اگر از syntax یا عملگرهای مدرن استفاده میکنید) و پلیفیلها (برای اضافه کردن تابعهایی که ممکن است موجود نباشند) استفاده کنید. و با این کار مطمئن خواهید بود که کد شما کار میکند.
103
84
104
85
برای مثال، بعدها که با جاوااسکریپت آشنایی بیشتری پیدا کنید، میتوانید یک سیستم build کد با [webpack](https://webpack.js.org/) و پلاگین [babel-loader](https://github.com/babel/babel-loader) راهاندازی کنید.
105
-
=======
106
-
Just don't forget to use a transpiler (if using modern syntax or operators) and polyfills (to add functions that may be missing). They'll ensure that the code works.
107
-
108
-
For example, later when you're familiar with JavaScript, you can setup a code build system based on [webpack](https://webpack.js.org/) with the [babel-loader](https://github.com/babel/babel-loader) plugin.
109
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
110
86
111
87
منابع خوبی که نشان میدهند فیچرهای مختلف در چه حالتی از پشتیبانی قرار دارند:
112
88
- <https://kangax.github.io/compat-table/es6/> - برای جاوااسکریپت.
0 commit comments