Skip to content

Update Variable Section #244

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from Dec 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ let currentUserName = "John";

دوباره، ما می‌توانستیم آن را به `userName` کوتاه کنیم اگر می‌دانستیم که قطعا کاربر، کاربر کنونی است.

ویرایشگرهای مدرن و تکمیل خودکار نوشتن اسم متغیرهای طولانی را راحت می‌کنند. در اسم آنها صرفه جویی نکنید. یک اسم تشکیل شده از 3 کلمه خوب است.
ویرایشگرهای مدرن و خاصیت autocomplete نوشتن اسم متغیرهای طولانی را راحت می‌کنند. در اسم آنها صرفه جویی نکنید. یک اسم تشکیل شده از 3 کلمه خوب است.

و اگر ویرایشگر شما تکمیل خودکار مناسبی ندارد، [یک ویرایشگر جدید](/code-editors) بگیرید.
و اگر ویرایشگر شما autocompletion مناسبی ندارد، [یک ویرایشگر جدید](/code-editors) بگیرید.
18 changes: 9 additions & 9 deletions 1-js/02-first-steps/04-variables/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ let message;
let message;

*!*
message = 'سلام'; // ذخیره کن message رشته «سلام» را در متغیر
message = 'Hello'; // ذخیره کن message را در متغیر «Hello» رشته
*/!*
```

Expand All @@ -42,7 +42,7 @@ alert(message); // محتوای متغیر را نشان می‌دهد
برای اختصار می‌توانیم تعریف متغیر و مقداردهی به آن را در یک خط قرار دهیم :

```js run
let message = 'سلام!'; // متغیر را تعریف کن و مقدار دهی کن
let message = 'Hello!'; // متغیر را تعریف کن و مقداردهی کن

alert(message); // !سلام
```
Expand Down Expand Up @@ -164,14 +164,14 @@ let message = "آن"; // SyntaxError: Identifier 'message' has already been decl
1. نام باید فقط از حروف، اعداد یا علامت `$` و `_` تشکیل شده باشد.
2. اولین کاراکتر نمی‌تواند عدد باشد.

مثال‌هایی از اسم‌های قابل قبول:
مثال‌هایی از نام‌های قابل قبول:

```js
let userName;
let test123;
```

زمانی‌ که یک نام متشکل از چند کلمه است، عموما از روش [camelCase](https://fa.wikipedia.org/wiki/نگارش_شتری) استفاده می‌شود. به این صورت که کلمات یکی پس از دیگری پشت هم نوشته می‌شوند و حرف اول هر کلمه حرف بزرگ است: `myVeryLongName`.
زمانی‌ که یک نام متشکل از چند کلمه است، عموما از روش [camelCase](https://fa.wikipedia.org/wiki/نگارش_شتری) استفاده می‌شود. به این صورت که کلمات یکی پس از دیگری پشت هم نوشته می‌شوند و حرف اول هر کلمه (به جز حرف اول کلمه اول) به حرف بزرگ است: `myVeryLongName`.

همینطور از `'$'` و `'_'` نیز می‌توان استفاده کرد. آنها فقط علامت هستند و معنی خاصی ندارند و همانند حروف قابل استفاده هستند.

Expand Down Expand Up @@ -204,14 +204,14 @@ let имя = '...';
let 我 = '...';
```

از نظر فنی، این‌ها درست کار می‌کنند و مجاز هستند، ولی بر اساس یک رسم بین‌المللی برای نام متغیرها از زبان انگلیسی استفاده می‌شود. حتی اگر اسکریپتی کوچک می‌نویسیم، ممکن است تا مدت طولانی‌ای مورد استفاده و توسعه قرار بگیرد. اشخاصی از سایر کشورها ممکن است نیاز باشد روزی آن اسکریپت را بخوانند.
از نظر فنی، این‌ها درست کار می‌کنند و مجاز هستند، ولی بر اساس یک قائده بین‌المللی برای نام متغیرها از زبان انگلیسی استفاده می‌شود. حتی اگر اسکریپتی کوچک می‌نویسیم، ممکن است تا مدت طولانی‌ای مورد استفاده و توسعه قرار بگیرد. اشخاصی از سایر کشورها ممکن است نیاز باشد روزی آن اسکریپت را بخوانند.
````

````warn header="نام‌های رِزِرو شده"

تعدادی [نام رزرو شده](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords) وجود دارد که نمی‌توان از آنها برای نام متغیرها استفاده نمود چراکه آنها توسط خودِ زبان جاوااسکریپت استفاده شده‌اند.

برای نمونه `let`، `class`، `return` و `function` رزرو هستند.
برای نمونه `let`، `class`، `return` و `function` رزرو شده‌اند.

کد پایین یک Syntax error خواهد داشت:

Expand Down Expand Up @@ -313,7 +313,7 @@ const pageLoadTime = /* زمان بارگیری برای یک صفحه وب */;

در پروژه‌های واقعی، بجای از صفر نوشتن برنامه‌ها، بیشتر زمان صرف اصلاح و توسعه کدهای موجود می‌شود. وقتی پس از مدتی به کدهای قبلی باز می‌گردیم، بدست آوردن اطلاعات از آن دسته کدهایی که نام‌گذاری‌های خوبی دارند بسیار راحت‌تر است (منظور متغیرهایی است که نام‌های خوبی دارند).

لطفا پیش از انتخاب نام برای یک متغیر خوب به آن فکر کنید. ثمره‌ی آن را خواهید دید.
لطفا پیش از انتخاب نام برای یک متغیر، خوب به آن فکر کنید. ثمره‌ی آن را خواهید دید.

بعضی از دستورالعمل‌های مفید:

Expand All @@ -331,15 +331,15 @@ const pageLoadTime = /* زمان بارگیری برای یک صفحه وب */;

یک متغیر اضافی خوب است، نه مضر.

بهینه‌سازی‌هایی که در مرورگرهای امروزی و همینطور کم‌حجم‌کننده‌های جاوااسکریپت صورت می‌گیرد، در بوجود نیامدن مشکلات عملکردی (Performance) برنامه‌های ما کمک می‌کنند. حتی استفاده از متغیرهای مختلف برای مقادیر مختلف به موتور جاوااسکریپت کمک می‌کند تا کد شما را بهینه کند.
بهینه‌سازی‌هایی که در مرورگرهای امروزی و همینطور کم‌حجم‌کننده‌های جاوااسکریپت صورت می‌گیرد، در به وجود نیامدن مشکلات عملکردی (Performance) برنامه‌های ما کمک می‌کنند. حتی استفاده از متغیرهای مختلف برای مقادیر مختلف به موتور جاوااسکریپت کمک می‌کند تا کد شما را بهینه کند.
```

## خلاصه

ما می‌توانیم با استفاده از کلیدواژه‌های `var`، `let` یا `const` متغیرهایی را برای ذخیره سازی اطلاعات تعریف کنیم.

- `let` -- حالت جدید تعریف متغیر است.
- `var` -- حالت قدیمی تعریف متغیر می‌باشد. معمولا اصلا از این روش استفاده نمی‌کنیم، اما تفاوت‌های آن را در بخش <info:var> بیان خواهیم کرد تا در صورت نیاز بتوانید از آن استفاده نمایید.
- `var` -- حالت قدیمی تعریف متغیر می‌باشد. معمولا به هیچ وجه از این روش استفاده نمی‌کنیم، اما تفاوت‌های آن را در بخش <info:var> بیان خواهیم کرد تا در صورت نیاز بتوانید از آن استفاده نمایید.
- `const` -- همانند `let` است با این تفاوت که مقدار آن قابل تغییر نیست.

نام متغیرها باید به گونه‌ای باشد که به ما اجازه دهد به راحتی متوجه شویم چه چیزی درون آن است.