Skip to content

Commit 1094287

Browse files
committed
2 parents 392d471 + 49fe2be commit 1094287

139 files changed

Lines changed: 974 additions & 723 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1-js/01-getting-started/1-intro/article.md

Lines changed: 62 additions & 133 deletions
Large diffs are not rendered by default.

1-js/01-getting-started/2-manuals-specifications/article.md

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,31 @@
33
این کتاب یک راهنما است که به شما کمک می‌کند در نهایت این زبان را بیاموزید. اما وقتی که شما با مفاهیم پایه‌ای آشنا شدید، به منابع دیگر نیاز خواهید داشت.
44
## مشخصات (Specification)
55

6-
**The ECMA-262 specification** شامل عمیق‌ترین، دقیق‌ترین و رسمی‌ترین اطلاعات در جاوا اسکریپت است که زبان را تعریف می‌کند.
6+
**The ECMA-262 specification** شامل عمیق‌ترین، دقیق‌ترین و رسمی‌ترین اطلاعات در جاوااسکریپت است که زبان را تعریف می‌کند.
77

88
اما در ابتدا اگر بخواهیم آنقدر رسمی و دقیق باشیم، درک این زبان سخت می‌شود. بنابراین اگر به منبع اطلاعات قابل اعتماد در مورد جزئیات این زبان نیاز دارید، Specification بهترین مکان است. اما برای استفاده‌ی روزانه نیست.
99

10-
آخرین نوشته در <https://tc39.es/ecma262/> است.
10+
یک نسخه جدید از مشخصات هر سال منتشر می‌شود. میان این انتشارها، آخرین مشخصات در <https://tc39.es/ecma262> است.
1111

1212
برای آگاهی از ویژگی‌های به روز که تقریبا استاندارد هستند، به <https://github.com/tc39/proposals> مراجعه کنید.
1313

14-
همینطور اگر به دنبال برنامه‌نویسی مرورگر هستید، به [بخش دوم](info:browser-environment) مراجعه کنید.
15-
## کتابچه راهنما
1614

17-
**MDN (Mozilla) JavaScript Reference** یک راهنما با مثال‌ها و اطلاعات دیگرست. خوب است که به عمق اطلاعات در مورد توابع زبان و متدها و غیره وارد شوید.
18-
میتوانید آنرا در <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference> پیدا کنید.
15+
**MDN (Mozilla) JavaScript Reference** یک راهنمای اصلی با مثال‌ها و اطلاعات دیگرست. خوب است که به عمق اطلاعات در مورد توابع زبان و متدها و غیره وارد شوید.
1916

20-
اگرچه اغلب اوقات بهتر است که در عوض، یک جستجویی در اینترنت بکنید. در عبارت مورد جستجوی خود "MDN [موضوع مورد نظر]" را قرار دهید. مثلا؛ در جستجوی تابع `parseInt`، <https://google.com/search?q=MDN+parseInt>.
17+
می‌توانید آنرا در <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference> پیدا کنید.
2118

22-
- **MSDN**، کتابچه راهنما مایکروسافت با بسیاری اطلاعات که شامل جاوا اسکریپت (که اغلب با اسم JScript آورده شده). اگر کسی به سوالی خاص در Internet Explorer نیاز داشت، بهتر است که به <http://msdn.microsoft.com/> مراجعه کند.
19+
اگرچه اغلب اوقات بهتر است که در عوض، یک جستجویی در اینترنت انجام دهید. در عبارت مورد جستجوی خود "MDN [موضوع مورد نظر]" را قرار دهید. مثلا؛ در جستجوی تابع `parseInt`، <https://google.com/search?q=MDN+parseInt>.
2320

24-
@@@needs translation@@@
25-
@@@old part@@@
26-
همینطور میتوانیم جستجوی اینترنتی با عباراتی مثل "RegExp MSDN" یا "RegExp MSDN jscript" را انجام دهیم.
27-
@@@old part@@@
28-
@@@new part@@@
29-
## پشتیبانی از ویژگی‌ها (Features)
30-
- **MDN (Mozilla) JavaScript Reference** is the main manual with examples and other information. It's great to get in-depth information about individual language functions, methods etc.
31-
@@@new part@@@
32-
@@@needs translation@@@
21+
## Compatibility tables
3322

34-
جاوا اسکریپت یک زبان برنامه‌نویسیت که به طور منظم به آن خواص جدیدی اضافه می‌شود.
23+
جاوااسکریپت یک زبان برنامه‌نویسیت که به طور منظم به آن خواص جدیدی اضافه می‌شود.
3524

36-
@@@needs translation@@@
37-
@@@old part@@@
3825
برای دیدن پشتیبانی مرورگر و بقیه‌ی موتورها این‌ها را ببینید:
3926

4027
- <http://caniuse.com> جدولی بر اساس پشتیبانی خواص. فرضاً برای دیدن اینکه کدام موتورها توابع مدرن رمزنگاری را پشتیبانی میکند به <http://caniuse.com/#feat=cryptography> مراجعه کنید.
4128

4229
- <https://kangax.github.io/compat-table> جدولی با ویژگی‌های زبان و موتورهایی که قابلیت پشتیبانی آنهارا دارند یا ندارند.
4330

44-
تمام این منابع در توسعه و برنامه‌نویسی‌ در زندگی واقعی مفیدند چراکه بسیاری اطلاعات ارزشمند راجب جزئیات زبان، پشتیبانیشان و غیره را دارند.
45-
@@@old part@@@
46-
@@@new part@@@
47-
Although, it's often best to use an internet search instead. Just use "MDN [term]" in the query, e.g. <https://google.com/search?q=MDN+parseInt> to search for `parseInt` function.
48-
@@@new part@@@
49-
@@@needs translation@@@
31+
تمام این منابع در توسعه و برنامه‌نویسی‌ در زندگی واقعی مفید هستند چرا که بسیاری اطلاعات ارزشمند درباره جزئیات زبان، پشتیبانی آن‌ها و غیره را دارند.
5032

51-
این صفحه را وقتی به اطلاعات دقیق یا یک ویژگی خاصی نیاز داشتید به یاد داشته باشید.
33+
این صفحه را وقتی به اطلاعات عمیق درباره یک ویژگی خاصی نیاز داشتید به یاد داشته باشید.

1-js/01-getting-started/3-code-editors/article.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313
اگر هنوز یک IDE انتخاب نکرده‌اید، موارد زیر را در نظر داشته باشید :
1414

15-
- [Visual Studio Code](https://code.visualstudio.com/) : رایگان - Cross Platform و همچنین تعدادی از قابلیت‌های IDE ها را دارد
16-
- [WebStorm](http://www.jetbrains.com/webstorm/) برای توسعه Front End . کمپانی Jetbrains همینطور IDE های دیگری را برای زبان‌های دیگر ارائه می‌کند (که رایگان نیستند)
15+
- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform، رایگان).
16+
- [WebStorm](http://www.jetbrains.com/webstorm/) (cross-platform، پولی).
1717

1818
همینطور برای Windows می‌توانید از Visual Studio استفاده کنید (منظور Visual Studio Code نیست). Visual Studio یک نرم افزار غیر رایگان است و فقط بر روی Windows کار می‌کند که برای توسعه پلتفرم dot net مناسب است. نسخه رایگان این نرم افزار [Visual Studio Community](https://www.visualstudio.com/vs/community/) نام دارد.
1919

@@ -31,9 +31,9 @@
3131

3232
موارد زیر ارزش توجه را دارند:
3333

34-
- [Atom](https://atom.io/): رایگان - Cross Platform
35-
- [Sublime Text](http://www.sublimetext.com): رایگان برای مدت محدود - Cross Platform
36-
- [Notepad++](https://notepad-plus-plus.org/): برای Windows - رایگان
34+
- [Atom](https://atom.io/) (cross-platform، رایگان).
35+
- [Sublime Text](http://www.sublimetext.com) (cross-platform، shareware).
36+
- [Notepad++](https://notepad-plus-plus.org/) (Windows، رایگان)
3737
- [Vim](http://www.vim.org/) و [Emacs](https://www.gnu.org/software/emacs/) هم اگر با نحوه کارشان آشنا باشید خوب هستند.
3838

3939
## بیایید بحث نکنیم
@@ -42,4 +42,4 @@
4242

4343
ویرایشگرهای دیگری نیز وجود دارند پس همانی که مورد علاقه شماست را انتخاب کنید.
4444

45-
انتخاب ویرایشگر یا هر ابزار دیگری شخصی بوده و به نوع پروژه، عادات و سلیقه شخصی بستگی دارد.
45+
انتخاب ویرایشگر یا هر ابزار دیگری شخصی بوده و به نوع پروژه، عادات و سلیقه شخصی بستگی دارد.

1-js/02-first-steps/04-variables/article.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ let my-name; // خط‌های پیوند '-' در نام‌ها ممنوع هس
194194
```
195195

196196
```smart header="بزرگی و کوچکی حروف مهم است"
197-
متغیر apple با Apple متفاوت است.
197+
متغیرهای apple و Apple دو متغیر متفاوت هستند.
198198
```
199199

200200
````smart header="کاراکترهای غیر انگلیسی مجاز هستند ولی توصیه نمی‌شوند"
@@ -299,9 +299,9 @@ Constant بودن یک متغیر صرفا بدین معناست که مقدار
299299
const pageLoadTime = /* زمان بارگیری برای یک صفحه وب */;
300300
```
301301
302-
مقدار ثابت `pageLoadTime` پیش از اجرای برنامه مشخص نبوده و به همین دلیل به صورت عادی نوشته شده است. اما همچنان یک ثابت است چراکه زمان اجرای برنامه بعد از مقدار دهی دیگر تغییر نخواهد کرد.
302+
مقدار `pageLoadTime` پیش از اجرای برنامه مشخص نبوده و به همین دلیل به صورت عادی نوشته شده است. اما همچنان یک ثابت است چراکه زمان اجرای برنامه بعد از مقدار دهی دیگر تغییر نخواهد کرد.
303303
304-
به تعبیری دیگر ثابت‌های با حروف بزرگ زمانی که اصطلاحا مقداری به صورت "hard code" شده داریم، به عنوان نام مستعار استفاده می‌شوند.
304+
به تعبیری دیگر، ثابت‌های با حروف بزرگ فقط به عنوان نام مستعار برای مقدار های «hard-coded» استفاده می‌شوند.
305305
306306
## نام‌های مناسب انتخاب کنید
307307
@@ -342,4 +342,4 @@ const pageLoadTime = /* زمان بارگیری برای یک صفحه وب */;
342342
- `var` -- حالت قدیمی تعریف متغیر می‌باشد. معمولا اصلا از این روش استفاده نمی‌کنیم، اما تفاوت‌های آن را در بخش <info:var> بیان خواهیم کرد تا در صورت نیاز بتوانید از آن استفاده نمایید.
343343
- `const` -- همانند `let` است با این تفاوت که مقدار آن قابل تغییر نیست.
344344
345-
نام متغیرها باید به گونه‌ای باشد که به ما اجازه دهد به راحتی متوجه شویم چه چیزی درون آن است.
345+
نام متغیرها باید به گونه‌ای باشد که به ما اجازه دهد به راحتی متوجه شویم چه چیزی درون آن است.

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

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,20 @@ n = 12.345;
6868

6969
## BigInt [#bigint-type]
7070

71-
در جاوااسکریپت، نوع "number" نمی‌تواند مقدارهای صحیح بیشتر از <code>(2<sup>53</sup>-1)</code> (برابر با `9007199254740991`) یا اعداد منفی کمتر از <code>-(2<sup>53</sup>-1)</code> را نشان دهد. این یک محدودیت فنی است که توسط نمایش درون زبانی آنها ایجاد شده است.
71+
در جاوااسکریپت، نوع "number" نمی‌تواند مقدارهای صحیح بیشتر از <code>(2<sup>53</sup>-1)</code> (برابر با `9007199254740991`) یا اعداد منفی کمتر از <code>-(2<sup>53</sup>-1)</code> برای اعداد منفی را نشان دهد.
7272

73-
آن مقدار برای بیشتر کارها کافی است، اما گاهی به اعداد بسیار بزرگ نیاز داریم، برای مثال در کریپتوگرافی یا timestamps با دقت میکرو ثانیه.
73+
اگر بخواهیم خیلی دقیق باشیم، نوع "number" می‌تواند اعداد صحیح بزرگ‌تر براذخیره کند (اعدادی تا <code>1.7976931348623157 * 10<sup>308</sup></code>) اما بیرون از محدوده امن عدد صحیح <code>±(2<sup>53</sup>-1)</code>، خطای دقت به وجود می‌آید چون تمام رقم‌ها درون حافظه 64 بیتی جای نمی‌گیرند. بنابراین یک مقدار تقریبی ممکن است ذخیره شود.
74+
75+
برای مثال، این دو عدد (کمی بیشتر از محدوده امن) یکسان هستند:
76+
77+
```js
78+
console.log(9007199254740991 + 1); // 9007199254740992
79+
console.log(9007199254740991 + 2); // 9007199254740992
80+
```
81+
82+
بنابراین، تمام اعداد صحیح فرد که از <code>(2<sup>53</sup>-1)</code> بیشتر هستند نمی‌توانند در نوع "number" ذخیره شوند.
83+
84+
محدوده <code>±(2<sup>53</sup>-1)</code> برای بیشتر کارها کافی است، اما گاهی به اعداد بسیار بزرگ نیاز داریم، برای مثال در کریپتوگرافی یا timestamps با دقت میکرو ثانیه.
7485

7586
نوع `BigInt` برای نمایش دادن اعداد صحیح که طول دلخواهی دارند به تازگی به زبان اضافه شده است.
7687

@@ -270,19 +281,21 @@ typeof alert // "function" (3)
270281

271282
در جاوااسکریپت 8 نوع داده پایه‌ای وجود دارد.
272283

273-
- `number` برای اعداد از هر دسته‌ای: عدد صحیح یا اعشاری، اعداد صحیح به <code>±(2<sup>53</sup>-1)</code> محدود می‌شوند.
274-
- `bigint` برای اعداد صحیح با طول دلخواه است.
275-
- `string` برای رشته‌ها. یک رشته ممکن است صفر کاراکتر یا بیشتر داشته باشد، هیج نوع جداگانه‌ی تک کاراکتری وجود ندارد.
276-
- `boolean` برای `true`/`false`.
277-
- `null` برای مقدارهای نامشخص -- یک نوع مستقل که فقط یک مقدار `null` دارد.
278-
- `undefined` برای مقدارهای تخصیص نیافته -- یک نوع مستقل که فقط یک مقدار `undefined` دارد.
279-
- `object` برای ساختارهای پیچیده‌تر داده.
280-
- `symbol` برای شناسه‌های یکتا.
284+
- هفت نوع داده اصلی:
285+
- `number` برای اعداد از هر دسته‌ای: عدد صحیح یا اعشاری، اعداد صحیح به <code>±(2<sup>53</sup>-1)</code> محدود می‌شوند.
286+
- `bigint` برای اعداد صحیح با طول دلخواه است.
287+
- `string` برای رشته‌ها. یک رشته ممکن است صفر کاراکتر یا بیشتر داشته باشد، هیج نوع جداگانه‌ی تک کاراکتری وجود ندارد.
288+
- `boolean` برای `true`/`false`.
289+
- `null` برای مقدارهای نامشخص -- یک نوع مستقل که فقط یک مقدار `null` دارد.
290+
- `undefined` برای مقدارهای تخصیص نیافته -- یک نوع مستقل که فقط یک مقدار `undefined` دارد.
291+
- `symbol` برای شناسه‌های یکتا.
292+
- و یک نوع داده غیر اصلی:
293+
- `object` برای ساختارهای پیچیده‌تر داده.
281294

282295
عملگر `typeof` به شما اجازه می‌دهد نوع مقدار ذخیره شده در یک متغیر را تشخصی دهید.
283296

284297
- معمولا به صورت `typeof x` استفاده می‌شود، اما `typeof(x)` هم قابل قبول است.
285298
- یک رشته شامل اسم نوع را برمی‌گرداند، مثل `"string"`.
286299
- برای `null` مقدار `"object"` را نمایش می‌دهد -- این یک خطا در خودِ زبان است، در واقع null یک object نیست.
287300

288-
در فصل‌های بعدی، ما روی نوع‌های "اولیه" تمرکز می‌کنیم و هنگامی که با آنها بیشتر آشنا شدیم، به سراغ شیءها می‌رویم.
301+
در فصل‌های بعدی، ما روی نوع‌های "اولیه" تمرکز می‌کنیم و هنگامی که با آنها بیشتر آشنا شدیم، به سراغ شیءها می‌رویم.

1-js/02-first-steps/07-type-conversions/article.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99

1010
```smart header="هنوز در مورد object ها صحبت نکرده‌ایم"
11-
در این بخش در مورد object ها صحبت نمی‌کنیم. بجای آن ابتدا انواع اولیه را خواهیم آموخت. بعدتر زمانی که در مورد object ها آموختیم، در مورد چگونگی تبدیل object ها صحبت خواهیم کرد.
11+
در این بخش در مورد object ها صحبت نمی‌کنیم. فعلا فقط درباره انواع اولیه صحبت می‌کنیم.
1212
```
1313

1414
## تبدیل به string
@@ -72,7 +72,7 @@ alert(age); // NaN, conversion failed
7272
|`undefined`|`NaN`|
7373
|`null`|`0`|
7474
|<code>true&nbsp;and&nbsp;false</code> | `1` and `0` |
75-
| `string` | فاصله‌های خالی ابتدا و انتها حذف می‌شوند. اگر رشته‌ی باقی مانده خالی باشد نتیجه `0` خواهد بود. در غیر اینصورت عدد موجود در رشته کاراکترها خوانده خواهد شد. همینطور اگر خطایی رخ دهد نتیجه `NaN` خواهد بود. |
75+
| `string` | فاصله‌های خالی ابتدا و انتها (شامل spaceها، tabها `\t`و خطوط جدید `\n` و دیگر موارد) حذف می‌شوند. اگر رشته‌ی باقی مانده خالی باشد نتیجه `0` خواهد بود. در غیر اینصورت عدد موجود در رشته کاراکترها «خوانده» خواهد شد. اگر خطایی رخ دهد نتیجه `NaN` خواهد بود. |
7676

7777
Examples:
7878

@@ -146,7 +146,7 @@ alert( Boolean(" ") ); // spaces, also true (any non-empty string is true)
146146
|`undefined`|`NaN`|
147147
|`null`|`0`|
148148
|<code>true&nbsp;/&nbsp;false</code> | `1 / 0` |
149-
| `string` | فاصله‌های خالی ابتدا و انتها حذف می‌شوند. اگر رشته‌ی باقی مانده خالی باشد نتیجه `0` خواهد بود. در غیر اینصورت عدد موجود در رشته کاراکترها خوانده خواهد شد. همینطور اگر خطایی رخ دهد نتیجه `NaN` خواهد بود. |
149+
| `string` | رشته همانطور که «هست» خوانده می‌شود و فاصله‌های خالی (شامل spaceها، tabها `\t`، خطوط جدید `\n` و غیره) نادیده گرفته می‌شوند. یک رشته خالی `0` می‌شود. ارور `NaN` را نتیجه می‌دهد. |
150150
151151
**`تبدیل به boolean`** – در عملگرهای منطقی رخ می‌دهد. از طریق `Boolean(value)` قابل انجام است.
152152
@@ -165,4 +165,3 @@ alert( Boolean(" ") ); // spaces, also true (any non-empty string is true)
165165
- `"0"` و string حاوی جای خالی `" "` به عنوان `boolean` برابر true خواهند بود.
166166
167167
در اینجا در مورد تبدیل object ها صحبت نکردیم و در بخش‌های بعدی به آنها خواهیم پرداخت.
168-

0 commit comments

Comments
 (0)