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/04-variables/article.md
+50
Original file line number
Diff line number
Diff line change
@@ -88,16 +88,26 @@ let user = 'John'
88
88
*!*var*/!* message ='سلام';
89
89
```
90
90
91
+
<<<<<<< HEAD
91
92
کلیدواژه `var` تقریبا* با*`let` یکسان است. آن هم یک متغیر را تعریف میکند، ولی روش کار آن قدیمی است.
92
93
93
94
تفاوتهای کوچکی بین این دو وجود دارد که در حال حاضر به آن نمیپردازیم. در مبحث <info:var> با جزییات به آن خواهیم پرداخت.
95
+
=======
96
+
The `var` keyword is *almost* the same as `let`. It also declares a variable but in a slightly different, "old-school" way.
97
+
98
+
There are subtle differences between `let` and `var`, but they do not matter to us yet. We'll cover them in detail in the chapter <info:var>.
99
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
94
100
````
95
101
96
102
## یک مقایسهی واقعی
97
103
98
104
برای درک مفهوم متغیر، میتوانیم آن را یک جعبه برای نگهداری اطلاعات تصور کنیم، که یک نام منحصربهفرد روی آن چسباندهایم.
99
105
106
+
<<<<<<< HEAD
100
107
برای نمونه، تصور کنید متغیر "`message`" در جعبهای با برچسب `message` و با مقدار "`سلام!`" داخل آن وجود دارد:
108
+
=======
109
+
For instance, the variable `message` can be imagined as a box labelled `"message"` with the value `"Hello!"` in it:
110
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
101
111
102
112

103
113
@@ -196,15 +206,24 @@ let my-name; // خطهای پیوند '-' در نامها ممنوع هس
196
206
متغیرهای apple و Apple دو متغیر متفاوت هستند.
197
207
```
198
208
209
+
<<<<<<< HEAD
199
210
````smart header="کاراکترهای غیر انگلیسی مجاز هستند ولی توصیه نمیشوند"
200
211
امکان استفاده از هر زبانی، شامل حروف cyrillic، لوگوگرامهای چینی و دیگر زبانها وجود دارد، مثلا اینگونه::
212
+
=======
213
+
````smart header="Non-Latin letters are allowed, but not recommended"
214
+
It is possible to use any language, including Cyrillic letters, Chinese logograms and so on, like this:
215
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
201
216
202
217
```js
203
218
let имя = '...';
204
219
let 我 = '...';
205
220
```
206
221
222
+
<<<<<<< HEAD
207
223
از نظر فنی، اینها درست کار میکنند و مجاز هستند، ولی بر اساس یک قائده بینالمللی برای نام متغیرها از زبان انگلیسی استفاده میشود. حتی اگر اسکریپتی کوچک مینویسیم، ممکن است تا مدت طولانیای مورد استفاده و توسعه قرار بگیرد. اشخاصی از سایر کشورها ممکن است نیاز باشد روزی آن اسکریپت را بخوانند.
224
+
=======
225
+
Technically, there is no error here. Such names are allowed, but there is an international convention to use English in variable names. Even if we're writing a small script, it may have a long life ahead. People from other countries may need to read it sometime.
myBirthday = '01.01.2001'; // !ارور، نمیتوان ثابت را دوباره مقداردهی کرد
262
281
```
263
282
283
+
<<<<<<< HEAD
264
284
وقتی برنامهنویس اطمینان دارد که متغیری هیچگاه تغییر نمیکند میتواند آن را به عنوان const تعریف کند تا برای دیگران نیز این موضوع واضح باشد.
285
+
=======
286
+
When a programmer is sure that a variable will never change, they can declare it with `const` to guarantee and communicate that fact to everyone.
287
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
265
288
266
289
290
+
<<<<<<< HEAD
267
291
### ثابتهای با حروف بزرگ
292
+
=======
293
+
There is a widespread practice to use constants as aliases for difficult-to-remember values that are known before execution.
294
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
268
295
269
296
به صورت یک عُرفِ همهگیر، از ثابتهای با حروف بزرگ به عنوان نام مستعار برای مقادیری که به خاطر سپردن آنها دشوار است، استفاده میشود. این دسته از ثابتها اصطلاحا prior to execution (پیش از اجرای برنامه) مقدارشان مشخص است.
270
297
@@ -291,31 +318,54 @@ alert(color); // #FF7F00
291
318
292
319
چه زمانی باید از حروف بزرگ و چه زمانی باید از حروف معمولی برای نامگذاری یک constant استفاده کنیم؟ بیایید قضیه را روشن کنیم.
293
320
321
+
<<<<<<< HEAD
294
322
ثابت بودن یک متغیر صرفا بدین معناست که مقدار آن تغییر نخواهد کرد. یک دسته از ثابتها پیش از اجرای برنامه مقدارشان مشخص خواهد بود (مثل هگزادسیمال برای رنگ قرمز) و دسته دیگر در حین اجرای (Run Time) برنامه مقدارشان مشخص میشود، اما پس از مقدار دهی اولیه مقدارشان تغییر نمیکند.
323
+
=======
324
+
Being a "constant" just means that a variable's value never changes. But some constants are known before execution (like a hexadecimal value for red) and some constants are *calculated* in run-time, during the execution, but do not change after their initial assignment.
325
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
295
326
296
327
برای نمونه:
297
328
298
329
```js
299
330
const pageLoadTime = /* زمان بارگیری برای یک صفحه وب */;
300
331
```
301
332
333
+
<<<<<<< HEAD
302
334
مقدار `pageLoadTime` پیش از اجرای برنامه مشخص نبوده و به همین دلیل به صورت عادی نوشته شده است. اما همچنان یک ثابت است چراکه زمان اجرای برنامه بعد از مقداردهی دیگر تغییر نخواهد کرد.
335
+
=======
336
+
The value of `pageLoadTime` is not known before the page load, so it's named normally. But it's still a constant because it doesn't change after the assignment.
337
+
338
+
In other words, capital-named constants are only used as aliases for "hard-coded" values.
339
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
303
340
304
341
به تعبیری دیگر، ثابتهای با حروف بزرگ فقط به عنوان نام مستعار برای مقدارهای «hard-coded» استفاده میشوند.
305
342
306
343
## نامهای مناسب انتخاب کنید
307
344
308
345
یک نکته بسیار پر اهمیت دیگر درباره متغیرها وجود دارد.
309
346
347
+
<<<<<<< HEAD
310
348
نام یک متغیر باید معنی واضح و روشنی داشته باشد که داده درون خود را توصیف میکند.
311
349
312
350
انتخاب نام برای متغیرها یکی از کارهای مهم و پیچیده در برنامهنویسی است. یک نگاه سریع به نام متغیرها میتواند تفاوت یک برنامهنویس تازهکار و با تجربه را نشان دهد.
351
+
=======
352
+
Variable naming is one of the most important and complex skills in programming. A glance at variable names can reveal which code was written by a beginner versus an experienced developer.
353
+
354
+
In a real project, most of the time is spent modifying and extending an existing code base rather than writing something completely separate from scratch. When we return to some code after doing something else for a while, it's much easier to find information that is well-labelled. Or, in other words, when the variables have good names.
355
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
313
356
314
357
در پروژههای واقعی، بجای از صفر نوشتن برنامهها، بیشتر زمان صرف اصلاح و توسعه کدهای موجود میشود. وقتی پس از مدتی به کدهای قبلی باز میگردیم، بدست آوردن اطلاعات از آن دسته کدهایی که نامگذاریهای خوبی دارند بسیار راحتتر است (منظور متغیرهایی است که نامهای خوبی دارند).
315
358
316
359
لطفا پیش از انتخاب نام برای یک متغیر، خوب به آن فکر کنید. ثمرهی آن را خواهید دید.
317
360
361
+
<<<<<<< HEAD
318
362
بعضی از دستورالعملهای مفید:
363
+
=======
364
+
- Use human-readable names like `userName` or `shoppingCart`.
365
+
- Stay away from abbreviations or short names like `a`, `b`, and `c`, unless you know what you're doing.
366
+
- Make names maximally descriptive and concise. Examples of bad names are `data` and `value`. Such names say nothing. It's only okay to use them if the context of the code makes it exceptionally obvious which data or value the variable is referencing.
367
+
- Agree on terms within your team and in your mind. If a site visitor is called a "user" then we should name related variables `currentUser` or `newUser` instead of `currentVisitor` or `newManInTown`.
368
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
319
369
320
370
- از نامهایی که برای انسان قابل فهم است استفاده کنید مانند `userName` یا `shoppingCart`.
321
371
- از نامهای مخفف یا کوتاه استفاده نکنید مانند `a`، `b`، `c`، مگر آنکه واقعا بدانید چه میکنید.
به دلیل اینکه اعداد `BigInt` به ندرت نیاز میشوند، ما آنها را اینجا پوشش نمیدهیم، اما یک فصل <info:bigint> جدا به آنها اختصاص دادیم. زمانی که به چنین اعداد بزرگی نیاز داشتید آن را بخوانید.
96
96
97
+
<<<<<<<HEAD
97
98
98
99
```smart header="مشکلات سازگاری"
99
100
در حال حاضر، `BigInt` در Firefox/Chrome/Edge/Safari پشتیبانی میشوند، اما در IE خیر.
100
101
```
101
102
102
103
شما میتوانید [جدول سازگاری BigInt در *MDN*](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility) را برای اینکه بدانید کدام نسخه از مرورگرها پشتیبانی میشوند، بررسی کنید.
103
104
105
+
=======
106
+
>>>>>>>34a80e70f8cce5794be259d25f815d7a7db7cbe3
104
107
## String
105
108
106
109
در جاوااسکریپت یک رشته (string) باید توسط کوتِیشِنها احاطه شود.
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/06-polyfills/article.md
+15
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,11 @@
7
7
8
8
پس کاملا طبیعی است که یک موتور فقط بخشی از یک استاندارد را پیادهسازی کند.
9
9
10
+
<<<<<<< HEAD
10
11
یک صفحهی خوب برای این که ببینید در حال حاضر چه چیزهایی پشتیبانی میشود اینجاست <https://compat-table.github.io/compat-table/es6/> (خیلی بزرگ است، ما چیزهای زیادی برای مطالعه داریم).
12
+
=======
13
+
A good page to see the current state of support for language features is <https://compat-table.github.io/compat-table/es6/> (it's big, we have a lot to study yet).
14
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
11
15
12
16
به عنوان توسعهدهنده، ما همیشه دوست داریم از ویژگیها و امکانات جدید استفاده کنیم. هر چه جدیدتر، بهتر!
13
17
@@ -71,9 +75,14 @@ if (!Math.trunc) { // اگر چنین تابعی وجود ندارد
71
75
72
76
جاوااسکریپت یک زبان بهشدت داینامیک است. اسکریپتها میتوانند هر تابعی را تغییر دهند یا اضافه کنند. حتی تابعهای built-in.
73
77
78
+
<<<<<<< HEAD
74
79
دو کتابخانه جالب پلیفیلها:
75
80
- [core js](https://github.com/zloirock/core-js) که از چیزهای زیادی پشتیبانی میکند و اجازه میدهد فقط فیچرهای مورد نیاز خود را اضافه کنید.
76
81
- [polyfill.io](http://polyfill.io) سرویسی که یک اسکریپت با پلیفیلها ارائه میدهد. بسته به فیچرها و مرورگر کاربر.
82
+
=======
83
+
Two interesting polyfill libraries are:
84
+
- [core js](https://github.com/zloirock/core-js) that supports a lot, allows to include only needed features.
85
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
77
86
78
87
79
88
## خلاصه
@@ -84,9 +93,15 @@ if (!Math.trunc) { // اگر چنین تابعی وجود ندارد
84
93
85
94
برای مثال، بعدها که با جاوااسکریپت آشنایی بیشتری پیدا کنید، میتوانید یک سیستم build کد با [webpack](https://webpack.js.org/) و پلاگین [babel-loader](https://github.com/babel/babel-loader) راهاندازی کنید.
86
95
96
+
<<<<<<< HEAD
87
97
منابع خوبی که نشان میدهند فیچرهای مختلف در چه حالتی از پشتیبانی قرار دارند:
88
98
- <https://compat-table.github.io/compat-table/es6/> - برای جاوااسکریپت.
89
99
- <https://caniuse.com/> - برای تابعهای مربوط به مرورگر.
100
+
=======
101
+
Good resources that show the current state of support for various features:
102
+
- <https://compat-table.github.io/compat-table/es6/> - for pure JavaScript.
103
+
- <https://caniuse.com/> - for browser-related functions.
104
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
90
105
91
106
پانوشت گوگل کروم معمولا نسبت به فیچرهای زبان بهروزترین است. اگر دموی یک آموزش کار نکرد، آن را امتحان کنید. البته بیشتر دموهای آموزش با هر مرورگر مدرنی کار میکنند.
0 commit comments