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/05-data-types/01-primitives-methods/article.md
+3-15Lines changed: 3 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,13 +39,8 @@ john.sayHi(); // Hi buddy!
39
39
40
40
## یک داده ابتدایی به عنوان یک شئ
41
41
42
-
<<<<<<< HEAD
43
-
تناقضی که سازنده جاوااسکریپت با آن مواجه شده:
44
-
-خیلی کارها هستند که یک نفر بخواهد با دادههای ابتدایی مثل رشته حروف یا اعداد انجام دهد که اگر دسترسی به آنها به عنوان تابع باشد عالی میشود.
45
-
=======
46
-
- There are many things one would want to do with a primitive, like a string or a number. It would be great to access them using methods.
47
-
- Primitives must be as fast and lightweight as possible.
48
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
42
+
-خیلی کارها هستند که یک نفر بخواهد با دادههای ابتدایی مثل رشته حروف یا اعداد انجام دهد. اگر دسترسی به آنها با استفاده از متدها باشد عالی میشود.
43
+
- مقدارهای اصلی باید تا حد امکان سریع و سبک باشند.
49
44
50
45
راه حال، اندکی عجیب به نظر میرسد:
51
46
@@ -112,18 +107,11 @@ if (zero) { // zero is true, because it's an object
112
107
}
113
108
```
114
109
115
-
<<<<<<< HEAD
116
-
از سویی دیگر، توابع مشابه `رشته حرف/عدد/متغیر بولی` بدون `new`، به شدت چیز به درد بخوری هستند. آنها یک مقدار را به نوع مربوطهشان تبدیل میکنند: یک رشته حرف، یک عدد یا یک متغیر بولی
110
+
از سویی دیگر، استفاده از توابع مشابه `String/Number/Boolean` بدون `new`، کامل درست و مفید است. آنها یک مقدار را به نوع مربوطهشان تبدیل میکنند: یک رشته حرف، یک عدد یا یک متغیر بولی
117
111
(داده ابتدایی).
118
112
119
113
برای مثال، این کاملا صحیح است:
120
114
121
-
=======
122
-
On the other hand, using the same functions `String/Number/Boolean` without `new` is totally fine and useful thing. They convert a value to the corresponding type: to a string, a number, or a boolean (primitive).
123
-
124
-
For example, this is entirely valid:
125
-
126
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
127
115
```js
128
116
let num =Number("123"); // convert a string to number
Copy file name to clipboardExpand all lines: 1-js/05-data-types/02-number/article.md
+11-53Lines changed: 11 additions & 53 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,15 +2,9 @@
2
2
3
3
در جاوااسکریپت، دو نوع عدد وجود دارد:
4
4
5
-
<<<<<<< HEAD
6
5
1. اعداد معمولی در جاوااسکریپت با فرمت 64 بیتی [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754-2008_revision) ذخیره میشوند، همچنین با "اعداد اعشاری با دقت یک صدم" هم شناخته میشوند. ما اکثر اوقات از این اعداد استفاده میکنیم، و درباره آنها در این فصل صحبت خواهیم کرد.
7
6
8
7
2. اعداد BigInt، برای نمایش اعدادی با طول دلخواه استفاده میشوند. آنها بعضی اوقات مورد نیاز هستند، چون اعداد معمولی نمیتوانند از <code>2<sup>53</sup></code> بیشتر یا از <code>-2<sup>53</sup></code> کمتر باشند. چون bigintها در چند حوزه خاص استفاده میشوند، ما به آنها یک فصل خاص <info:bigint> اختصاص میدهیم.
9
-
=======
10
-
1. Regular numbers in JavaScript are stored in 64-bit format [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754), also known as "double precision floating point numbers". These are numbers that we're using most of the time, and we'll talk about them in this chapter.
11
-
12
-
2. BigInt numbers represent integers of arbitrary length. They are sometimes needed because a regular integer number can't safely exceed <code>(2<sup>53</sup>-1)</code> or be less than <code>-(2<sup>53</sup>-1)</code>, as we mentioned earlier in the chapter <info:types>. As bigints are used in few special areas, we devote them a special chapter <info:bigint>.
13
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
14
8
15
9
پس اینجا درباره اعداد معمولی صحبت میکنیم. بیایید دانشمان درباره آنها را گسترش دهیم.
16
10
@@ -28,11 +22,7 @@ let billion = 1000000000;
28
22
let billion =1_000_000_000;
29
23
```
30
24
31
-
<<<<<<< HEAD
32
-
اینجا خط تیره `_` نقش "syntactic sugar" را بازی میکند، و عدد را خواناتر میکند. موتور جاوااسکریپت به راحتی `_` بین ارقام را نادیده میگیرد، پس دقیقا عددی مانند یک میلیارد بالا است.
33
-
=======
34
-
Here the underscore `_` plays the role of the "[syntactic sugar](https://en.wikipedia.org/wiki/Syntactic_sugar)", it makes the number more readable. The JavaScript engine simply ignores `_` between digits, so it's exactly the same one billion as above.
35
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
25
+
اینجا خط تیره `_` نقش "[syntactic sugar](https://en.wikipedia.org/wiki/Syntactic_sugar)" را بازی میکند، و عدد را خواناتر میکند. موتور جاوااسکریپت به راحتی `_` بین ارقام را نادیده میگیرد، پس دقیقا عددی مانند یک میلیارد بالا است.
36
26
37
27
اما در زندگی واقعی ما عموما از نوشتن رشته حرف با تعداد زیاد صفر خودداری میکنیم به خاطر اینکه به راحتی ممکن است خطا داشته باشیم و اشتباه بنویسیم. همینطور، ما تنبل هستیم! ما معمولا یه چیزی شبیه "1bn" مینویسیم به جای یک میلیارد یا "7.3bn" برای هفت میلیارد و سیصد میلیون. این حقیقت برای اکثر اعداد بزرگ هم صحیح است.
38
28
@@ -60,11 +50,7 @@ let mсs = 0.000001;
60
50
دقیقا مثل قبل، استفاده از `"e"` میتواند کمک کند. اگر ما بخواهیم که از نوشتن صفرها خودداری کنیم، میتوانیم بنویسیم:
61
51
62
52
```js
63
-
<<<<<<<HEAD
64
-
let mcs =1e-6; // شش صفر در سمت چپ ۱
65
-
=======
66
-
let mcs =1e-6; // five zeroes to the left from 1
67
-
>>>>>>>7000ede297bfd688f9a3767e8ca43abd9242f322
53
+
let mcs =1e-6; // پنج صفر در سمت چپ ۱
68
54
```
69
55
70
56
اگر ما تعداد صفرهای `0.000001` را بشماریم، شش تا از آنها موجودست. بنابراین طبعا میشود `1e-6`.
@@ -78,8 +64,8 @@ let mcs = 1e-6; // five zeroes to the left from 1
78
64
// -6 divides by 1 with 6 zeroes
79
65
1.23e-6===1.23/1000000; // 0.00000123
80
66
81
-
//an example with a bigger number
82
-
1234e-2===1234/100; //12.34, decimal point moves 2 times
67
+
//مثالی با یک عدد بزرگتر
68
+
1234e-2===1234/100; //ممیز دو بار حرکت میکند، 12.34
در درون سیستم، یک عدد به شکل ۶۴-بیتی است [IEEE-754](http://en.wikipedia.org/wiki/IEEE_754-1985)، بنابراین دقیقا ۶۴ بیت برای ذخیرهی یک عدد داریم: ۵۲ تا از آنها برای ذخیره کردن ارقام هستند، ۱۱ تا از آنها برای ذخیره کردن جایگاه نقطهی مشخص کنندهی اعشار (که برای اعداد صحیح صفر است)، و یک بیت برای علامت آن.
214
-
=======
215
-
Internally, a number is represented in64-bit format [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754), so there are exactly 64 bits to store a number: 52 of them are used to store the digits, 11 of them store the position of the decimal point, and 1 bit is for the sign.
216
-
>>>>>>>7000ede297bfd688f9a3767e8ca43abd9242f322
217
195
218
196
اگر عددی بیش از حد بزرگ باشد، حافظهی ۶۴ بیتی سرریز میشود و به مقدار بینهایت تبدیل میشود:
اما آیا ما به این تابع نیاز داریم؟ نمیتوانیم صرفا از تساوی `=== NaN` استفاده کنیم؟ متاسفانه جواب خیر است. مقدار `NaN`، مقداری یکتاست و با هیچ چیز، حتی خودش برابر نیست.
334
311
335
-
=======
336
-
But do we need thisfunction? Can't we just use the comparison `=== NaN`? Unfortunately not. The value `NaN` is unique in that it does not equal anything, including itself:
337
-
338
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
339
312
```js run
340
313
alert( NaN === NaN ); // false
341
314
```
@@ -360,14 +333,8 @@ alert( isFinite(num) );
360
333
361
334
توجه داشته باشید که رشته حرفیای که در آن فقط یک جای خالی باشد یا کلا خالی باشد، به عنوان صفر در همهی توابع عددی از جمله `isFinite` در نظر گرفته میشود.
362
335
363
-
<<<<<<< HEAD
364
336
```smart header="مقایسه کنید با `Object.is`"
365
-
366
-
یک تابع از پیش آماده شدهی خاص [Object.is](mdn:js/Object/is) که مقادیر را مثل `===` مقایسه میکند، اما برای دو حالت مرزی قابل اعتمادتر است.
367
-
=======
368
-
```smart header="Compare with `Object.is`"
369
-
There is a special built-in method `Object.is` that compares values like `===`, but is more reliable for two edge cases:
370
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
337
+
یک متد درونساخت خاص به نام [Object.is](mdn:js/Object/is) وجود دارد که مقادیر را مثل `===` مقایسه میکند، اما برای دو حالت مرزی قابل اعتمادتر است:
371
338
372
339
۱. با `NaN` کار میکند: `Object.is(NaN, NaN) ===true`، که چیز خوبیست.
373
340
۲. مقادیر `0` و `-0` متفاوت هستند: `Object.is(0, -0) ===false`، به ندرت اهمیت دارد، اما این مقادیر در اصل متفاوتند.
- `parseInt(str, base)` یک عدد صحیح را از هر سیستم عددی با پایهی `2 ≤ base ≤ 36` را استخراج میکند.
470
432
- `num.toString(base)` یک عدد را به یک رشتهی حرفی در سیستم عددی با پایه داده شده تبدیل میکند.
471
433
472
-
برای تبدیل مقادیری مثل `12pt` و `100px` به یک عدد:
434
+
برای آزمایش عادی عددها:
473
435
474
-
<<<<<<< HEAD
475
-
- `parseInt/parseFloat` را برای تبدیلات ساده استفاده کنید که یک عدد را از یک رشتهی حرفی میخواند و سپس مقداری که قبل از بروز خطا خواندهست را برمیگرداند.
476
-
=======
477
-
For regular number tests:
436
+
- `isNaN(value)` آرگومان خود را به یک عدد تبدیل میکند و بررسی میکند که `NaN` است یا خیر.
437
+
- `isFinite(value)` آرگومان خود را به عدد تبدیل میکند و اگر یک عدد معمولی باشد `true` برمیگرداند نه اینکه `NaN/Infinity/-Infinity` باشد.
478
438
479
-
- `isNaN(value)` converts its argument to a number and then tests it for being `NaN`
480
-
- `isFinite(value)` converts its argument to a number and returns `true` if it's a regular number, not `NaN/Infinity/-Infinity`
439
+
برای تبدیل مقادیری مثل `12pt` و `100px` به یک عدد:
481
440
482
-
For converting values like `12pt` and `100px` to a number:
483
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
441
+
- `parseInt/parseFloat` را برای تبدیلات ساده استفاده کنید که یک عدد را از یک رشتهی حرفی میخواند و سپس مقداری که قبل از بروز خطا خواندهست را برمیگرداند.
کوتیشنهای تکی و دوتایی از زمان بسیار قدیم در زبان وجود داشتند زمانی که نیاز به رشتههای چند خطی خیلی به چشم نمیآمد. Backtickها بعدها به وجود آمدند و به این ترتیب چند کاره هستند.
53
-
=======
54
-
Single and double quotes come from ancient times of language creation, when the need for multiline strings was not taken into account. Backticks appeared much later and thus are more versatile.
55
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
56
52
57
53
Backtickها به ما اجازه میدهند که یک "تابع الگو" قبل از backtick اول مشخص کنیم. سینتکس اینگونه است: <code>func`string`</code>. تابع `func` به طور خودکار صدا زده میشود، رشته را دریافت میکند و عبارات را ایجاد میکند و میتواند با آنها فرایندی انجام دهد. به این "الگوهای برچسب گذاری شده" میگویند. این ویژگی پیادهسازی الگوهای سفارشی را آسانتر میکند، اما در عمل خیلی کم استفاده میشود. میتوانید درباره آن در [کتاب راهنما](mdn:/JavaScript/Reference/Template_literals#Tagged_templates) بیشتر بخوانید.
58
54
@@ -376,13 +372,8 @@ alert( "Widget".includes("id", 3) ); // false وجود ندارد پس "id" از
376
372
متدهای [str.startsWith](mdn:js/String/startsWith)(بررسی شروع شدن رشته با یک زیر رشته) و [str.endsWith](mdn:js/String/endsWith)(بررسی پایان یافتن رشته با یک زیر رشته) دقیقا کاری را که میگویند انجام میدهند:
377
373
378
374
```js run
379
-
<<<<<<<HEAD
380
-
alert( "Widget".startsWith("Wid") ); // true شروع میشود پس "Wid" با "Widget"
381
-
alert( "Widget".endsWith("get") ); // true پایان مییابد پس "get" با "Widget"
382
-
=======
383
-
alert( "*!*Wid*/!*get".startsWith("Wid") ); // true, "Widget" starts with "Wid"
384
-
alert( "Wid*!*get*/!*".endsWith("get") ); // true, "Widget" ends with "get"
385
-
>>>>>>>7000ede297bfd688f9a3767e8ca43abd9242f322
375
+
alert( "*!*Wid*/!*get".startsWith("Wid") ); // true شروع میشود پس "Wid" با "Widget"
376
+
alert( "Wid*!*get*/!*".endsWith("get") ); // true پایان مییابد پس "get" با "Widget"
386
377
```
387
378
388
379
## گرفتن یک زیر رشته
@@ -615,11 +606,7 @@ alert( '𝒳'.charCodeAt(1).toString(16) ); // dcb3, between 0xdc00 and 0xdfff
615
606
616
607
### نشانههای تفکیک کننده و عادیسازی
617
608
618
-
<<<<<<< HEAD
619
609
در بسیاری از زبانها نشانههایی وجود دارند که ترکیبی از یک کاراکتر پایه و یک علامت در بالا/پایین آن هستند.
620
-
=======
621
-
In many languages, there are symbols that are composed of the base character with a mark above/under it.
622
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
623
610
624
611
برای مثال، حرف `a` حرف پایه برای `àáâäãåā` است. اکثر کاراکترهای «ترکیبشده» متداول کد خود را در جدول UTF-16 دارند. اما نه همه آنها، چون ترکیبات ممکن بسیار زیادی وجود دارد.
0 commit comments