From 962c72861a8de57551d3effb184bfbf20b46120d Mon Sep 17 00:00:00 2001 From: Bexacuter Date: Sun, 4 Dec 2022 21:13:31 +0330 Subject: [PATCH 1/6] Update 'Type' section --- .../05-types/1-string-quotes/solution.md | 12 +++---- .../05-types/1-string-quotes/task.md | 6 ++-- 1-js/02-first-steps/05-types/article.md | 32 +++++++++---------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/1-js/02-first-steps/05-types/1-string-quotes/solution.md b/1-js/02-first-steps/05-types/1-string-quotes/solution.md index 5a650f9b9..12f5a674d 100644 --- a/1-js/02-first-steps/05-types/1-string-quotes/solution.md +++ b/1-js/02-first-steps/05-types/1-string-quotes/solution.md @@ -4,12 +4,12 @@ Backticks عبارت داخل `{...}$` را در رشته قرار می‌دهد ```js run let name = "Ilya"; -// عبارت عدد 1 است -alert( `سلام ${1}` ); // 1 سلام +// the expression is a number 1 +alert( `hello ${1}` ); // hello 1 -// است "name" عبارت رشته -alert( `سلام ${"name"}` ); // name سلام +// the expression is a string "name" +alert( `hello ${"name"}` ); // hello name -// عبارت یک متغیر است، آن را داخل رشته قرار می‌دهد -alert( `سلام ${name}` ); // Ilya سلام +// the expression is a variable, embed it +alert( `hello ${name}` ); // hello Ilya ``` diff --git a/1-js/02-first-steps/05-types/1-string-quotes/task.md b/1-js/02-first-steps/05-types/1-string-quotes/task.md index f20a99a2e..14c97386c 100644 --- a/1-js/02-first-steps/05-types/1-string-quotes/task.md +++ b/1-js/02-first-steps/05-types/1-string-quotes/task.md @@ -9,9 +9,9 @@ importance : 5 ```js let name = "Ilya"; -alert( `سلام ${1}` ); // ? +alert( `hello ${1}` ); // ? -alert( `سلام ${"name"}` ); // ? +alert( `hello ${"name"}` ); // ? -alert( `سلام ${name}` ); // ? +alert( `hello ${name}` ); // ? ``` diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index c72bdbe9f..d6e341b2d 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -25,7 +25,7 @@ n = 12.345; عملیات مختلفی در مورد اعداد وجود دارد مانند ضرب `*` ، تقسیم `/` ، جمع `+` ، تفریق `-` و غیره. -همینطور بجز اعداد معمولی، اعداد خاصی نیز وجود دارند که به همین نوع از متغیرها مربوط می‌شوند. یعنی: `Infinity` (بی‌نهایت)، `-Infinity` (منفی بی‌نهایت) و `NaN`. +همینطور بجز اعداد معمولی، اعداد خاصی نیز وجود دارند که به همین نوع از متغیرها مربوط می‌شوند. یعنی: `Infinity` (بی‌نهایت)، `Infinity-` (منفی بی‌نهایت) و `NaN`. - Infinity بیانگر علامت ریاضیاتیِ [بی‌نهایت](https://fa.wikipedia.org/wiki/بی%E2%80%8Cنهایت) ∞ است. این مقدار خاص بوده که از هر عدد دیگری بزرگتر است. @@ -43,7 +43,7 @@ n = 12.345; - `NaN` بیانگر یک اشکال محاسباتی است. این مقدار نتیجه یک عملیات ریاضیاتی غلط یا تعریف‌نشده است. برای نمونه: ```js run - alert( "چیزی غیر از عدد" / 2 ); // NaN ،چنین تقسیمی اشتباه است + alert( "not a number" / 2 ); // NaN ،چنین تقسیمی اشتباه است ``` `NaN` جسبنده است. هر عمل ریاضیاتی روی `NaN` مقدار `NaN` را برمی‌گرداند: @@ -51,7 +51,7 @@ n = 12.345; ```js run alert( NaN + 1 ); // NaN alert( 3 * NaN ); // NaN - alert( "چیزی غیر از عدد" / 2 - 1 ); // NaN + alert( "not a number" / 2 - 1 ); // NaN ``` در نتیجه اگر جایی در عبارت ریاضیاتی `NaN`وجود داشته باشد، بر روی تمام معادله تاثیر می‌گذارد (فقط یک استثنا برای آن وجود دارد: `NaN ** 0` برابر با `1` است). @@ -59,7 +59,7 @@ n = 12.345; ```smart header="عملیات ریاضیاتی امن هستند" عملیات ریاضی در جاوااسکریپت امن است. ما هر نوع عملی می‌توانیم انجام دهیم مانند تقسیم بر صفر، رفتار کردن با رشته‌های غیر عددی همانند اعداد و غیره. -اسکریپت ما هیچگاه با خطای مرگباری مواجه نخواهد شد. در بدترین حالت `NaN` را به عنوان نتیجه خواهیم گرفت. +اسکریپت ما هیچگاه با خطای مرگباری (fatal error) مواجه نخواهد شد. در بدترین حالت `NaN` را به عنوان نتیجه خواهیم گرفت. ``` مقدارهای عددی خاص به طور رسمی به نوع "number" تعلق دارند. البته آنها به معنای واقعی این کلمه، عدد نیستند. @@ -70,7 +70,7 @@ n = 12.345; در جاوااسکریپت، نوع "number" نمی‌تواند مقدارهای صحیح بیشتر از (253-1) (برابر با `9007199254740991`) یا اعداد منفی کمتر از -(253-1) برای اعداد منفی را نشان دهد. -اگر بخواهیم خیلی دقیق باشیم، نوع "number" می‌تواند اعداد صحیح بزرگ‌تر براذخیره کند (اعدادی تا 1.7976931348623157 * 10308) اما بیرون از محدوده امن عدد صحیح ±(253-1)، خطای دقت به وجود می‌آید چون تمام رقم‌ها درون حافظه 64 بیتی جای نمی‌گیرند. بنابراین یک مقدار تقریبی ممکن است ذخیره شود. +اگر بخواهیم خیلی دقیق باشیم، نوع "number" می‌تواند اعداد صحیح بزرگ‌تر را ذخیره کند (اعدادی تا 1.7976931348623157 * 10308) اما بیرون از محدوده امن عدد صحیح (253-1)±، خطای دقت به وجود می‌آید چون تمام رقم‌ها درون حافظه 64 بیتی جای نمی‌گیرند. بنابراین یک مقدار تقریبی ممکن است ذخیره شود. برای مثال، این دو عدد (کمی بیشتر از محدوده امن) یکسان هستند: @@ -81,7 +81,7 @@ console.log(9007199254740991 + 2); // 9007199254740992 بنابراین، تمام اعداد صحیح فرد که از (253-1) بیشتر هستند نمی‌توانند در نوع "number" ذخیره شوند. -محدوده ±(253-1) برای بیشتر کارها کافی است، اما گاهی به اعداد بسیار بزرگ نیاز داریم، برای مثال در کریپتوگرافی یا timestamps با دقت میکرو ثانیه. +محدوده (253-1)± برای بیشتر کارها کافی است، اما گاهی به اعداد بسیار بزرگ نیاز داریم، برای مثال در کریپتوگرافی یا timestamps با دقت میکرو ثانیه. نوع `BigInt` برای نمایش دادن اعداد صحیح که طول دلخواهی دارند به تازگی به زبان اضافه شده است. @@ -125,15 +125,15 @@ Backticks کوتیشن‌هایی با "قابلیت‌های گسترده" هس let name = "John"; // تعبیه کردن یک متغیر -alert( `سلام، *!*${name}*/!*!` ); // !John ،سلام +alert( `Hello, *!*${name}*/!*!` ); // Hello, John! // تعبیه کردن یک عبارت -alert( `نتیجه *!*${1 + 2}*/!* است` ); // نتیجه 3 است +alert( `the result is *!*${1 + 2}*/!*` ); // the result is 3 ``` -عبارتی که در `${…}` قرار می‌گیرد اجرا شده و نتیجه آن در رشته مورد نظر قرار می‌گیرد. ما می‌توانیم هر چیزی را درون آن قرار دهیم: یک متغیر مثل `name` یا بک عبارت محاسباتی مثل `1 + 2` یا حتی چیزی پیچیده‌تر. +عبارتی که در `{…}$` قرار می‌گیرد اجرا شده و نتیجه آن در رشته مورد نظر قرار می‌گیرد. ما می‌توانیم هر چیزی را درون آن قرار دهیم: یک متغیر مثل `name` یا یک عبارت محاسباتی مثل `1 + 2` یا حتی چیزی پیچیده‌تر. -توجه داشته باشید که این فقط می‌تواند در Backticks انجام شود. کوتیشن‌های دیگر این قابلیت تعبیه کردن را ندارند: +توجه داشته باشید که این فقط می‌تواند در Backticks انجام شود. کوتیشن‌های دیگر قابلیت تعبیه کردن را ندارند: ```js run alert( "the result is ${1 + 2}" ); // the result is ${1 + 2} (کاری نمی‌کنند double quotes) ``` @@ -216,9 +216,9 @@ alert(x); // "undefined" نوع `object` (شیء) از انواع خاص است. -انواع مختلف داده که تا اینجا مطالعه کردیم از انواع «اولیه» بودند چرا که مقدار آنها فقط شامل یک چیز می‌شد (رشته یا عدد یا هر چیز دیگری). در مقابل، شیءها برای ذخیره مجموعه‌ای از داده‌ها به شکلی پیچیده‌تر استفاده می‌شوند. +انواع مختلف داده که تا اینجا مطالعه کردیم از انواع «primitive» بودند چرا که مقدار آنها فقط شامل یک چیز می‌شد (رشته یا عدد یا هر چیز دیگری). در مقابل، شیءها برای ذخیره مجموعه‌ای از داده‌ها به شکلی پیچیده‌تر استفاده می‌شوند. -شیءها به حدی مهم هستند که لایق طرز برخورد ویژه‌ای هستند. ما بعدا در فصل به سراغ آنها خواهیم رفت، بعد از اینکه درباره انواع اولیه بیشتر یاد گرفتیم. +شیءها به حدی مهم هستند که لایق طرز برخورد ویژه‌ای هستند. ما بعدا در فصل به سراغ آنها خواهیم رفت، بعد از اینکه درباره انواع primitive بیشتر یاد گرفتیم. نوع `symbol` برای ایجاد شناسه‌های منحصر به فرد برای شیءها مورد استفاده قرار می‌گیرد. به منظور تکمیل این بخش این نوع داده را نیز در اینجا عنوان می‌کنیم اما جزییات آن را تا زمانی که شیءها را بشناسیم به آینده موکول می‌کنیم. @@ -270,7 +270,7 @@ typeof alert // "function" (3) ```smart header="سینتکس `typeof(x)`" شاید سینتکس دیگری را دیده باشید: `typeof(x)`. این با `typeof x` یکسان است. -برای اینکه واضح باشد: `typeof` یک اپراتور است نه یک تابع. اینجا پرانتزها بخشی از `typeof` نیستند. این نوعی از پرانتز است که برای گروه‌بندی ریاضیاتی استفاده می‌شود. +برای اینکه واضح باشد: `typeof` یک عملگر است نه یک تابع. اینجا پرانتزها بخشی از `typeof` نیستند. این نوعی از پرانتز است که برای گروه‌بندی ریاضیاتی استفاده می‌شود. معمولا چنین پرانتزهایی یک عبارت ریاضیاتی، مانند `(2 + 2)`، را شامل می‌شوند اما اینجا آن‌ها فقط آرگومان `(x)` را دارند. از لحاظ سینتکس، آن‌ها به ما این امکان را می‌دهند که از وجود فاصله بین عملگر `typeof` و آرگومانش جلوگیری کنیم و بعضی از اشخاص آن را دوست دارند. @@ -282,14 +282,14 @@ typeof alert // "function" (3) در جاوااسکریپت 8 نوع داده پایه‌ای وجود دارد. - هفت نوع داده اولیه: - - `number` برای اعداد از هر دسته‌ای: عدد صحیح یا اعشاری، اعداد صحیح به ±(253-1) محدود می‌شوند. + - `number` برای اعداد از هر دسته‌ای: عدد صحیح یا اعشاری، اعداد صحیح به (253-1)± محدود می‌شوند. - `bigint` برای اعداد صحیح با طول دلخواه است. - `string` برای رشته‌ها. یک رشته ممکن است صفر کاراکتر یا بیشتر داشته باشد، هیج نوع جداگانه‌ی تک کاراکتری وجود ندارد. - `boolean` برای `true`/`false`. - `null` برای مقدارهای نامشخص -- یک نوع مستقل که فقط یک مقدار `null` دارد. - `undefined` برای مقدارهای تخصیص نیافته -- یک نوع مستقل که فقط یک مقدار `undefined` دارد. - `symbol` برای شناسه‌های یکتا. -- و یک نوع داده غیر اولیه: +- و یک نوع داده non-primitive : - `object` برای ساختارهای پیچیده‌تر داده. عملگر `typeof` به شما اجازه می‌دهد نوع مقدار ذخیره شده در یک متغیر را تشخصی دهید. @@ -298,4 +298,4 @@ typeof alert // "function" (3) - یک رشته شامل اسم نوع را برمی‌گرداند، مثل `"string"`. - برای `null` مقدار `"object"` را نمایش می‌دهد -- این یک خطا در خودِ زبان است، در واقع null یک object نیست. -در فصل‌های بعدی، ما روی نوع‌های "اولیه" تمرکز می‌کنیم و هنگامی که با آنها بیشتر آشنا شدیم، به سراغ شیءها می‌رویم. +در فصل‌های بعدی، ما روی نوع‌های "primitive" تمرکز می‌کنیم و هنگامی که با آنها بیشتر آشنا شدیم، به سراغ شیءها می‌رویم. From a9b27ff3de543905a3e990f31bd2b4742d1287c0 Mon Sep 17 00:00:00 2001 From: Bexacuter <89866643+Bexacuter@users.noreply.github.com> Date: Wed, 7 Dec 2022 13:19:21 +0330 Subject: [PATCH 2/6] Update 1-js/02-first-steps/05-types/article.md Co-authored-by: Mahdi Hashemi --- 1-js/02-first-steps/05-types/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index d6e341b2d..6fc484a93 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -43,7 +43,7 @@ n = 12.345; - `NaN` بیانگر یک اشکال محاسباتی است. این مقدار نتیجه یک عملیات ریاضیاتی غلط یا تعریف‌نشده است. برای نمونه: ```js run - alert( "not a number" / 2 ); // NaN ،چنین تقسیمی اشتباه است + alert( "not a number (چیزی غیر از عدد)" / 2 ); // NaN ،چنین تقسیمی اشتباه است ``` `NaN` جسبنده است. هر عمل ریاضیاتی روی `NaN` مقدار `NaN` را برمی‌گرداند: From 0f76f3d7ff531740ec8cdc8c698f2e833f9ba0eb Mon Sep 17 00:00:00 2001 From: Bexacuter <89866643+Bexacuter@users.noreply.github.com> Date: Wed, 7 Dec 2022 13:19:29 +0330 Subject: [PATCH 3/6] Update 1-js/02-first-steps/05-types/article.md Co-authored-by: Mahdi Hashemi --- 1-js/02-first-steps/05-types/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index 6fc484a93..3071258ce 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -51,7 +51,7 @@ n = 12.345; ```js run alert( NaN + 1 ); // NaN alert( 3 * NaN ); // NaN - alert( "not a number" / 2 - 1 ); // NaN + alert( "not a number (چیزی غیر از عدد)" / 2 - 1 ); // NaN ``` در نتیجه اگر جایی در عبارت ریاضیاتی `NaN`وجود داشته باشد، بر روی تمام معادله تاثیر می‌گذارد (فقط یک استثنا برای آن وجود دارد: `NaN ** 0` برابر با `1` است). From c9dd74546733f72eac0d71a9af49d1755edcd951 Mon Sep 17 00:00:00 2001 From: Bexacuter <89866643+Bexacuter@users.noreply.github.com> Date: Wed, 7 Dec 2022 13:19:37 +0330 Subject: [PATCH 4/6] Update 1-js/02-first-steps/05-types/article.md Co-authored-by: Mahdi Hashemi --- 1-js/02-first-steps/05-types/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index 3071258ce..7329da3f6 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -128,7 +128,7 @@ let name = "John"; alert( `Hello, *!*${name}*/!*!` ); // Hello, John! // تعبیه کردن یک عبارت -alert( `the result is *!*${1 + 2}*/!*` ); // the result is 3 +alert( `the result is *!*${1 + 2}*/!*` ); // the result is 3 (ترجمه: نتیجه 3 است) ``` عبارتی که در `{…}$` قرار می‌گیرد اجرا شده و نتیجه آن در رشته مورد نظر قرار می‌گیرد. ما می‌توانیم هر چیزی را درون آن قرار دهیم: یک متغیر مثل `name` یا یک عبارت محاسباتی مثل `1 + 2` یا حتی چیزی پیچیده‌تر. From 39732f0a87541fa9ba621074be4e767cfacf6b5a Mon Sep 17 00:00:00 2001 From: Bexacuter Date: Wed, 7 Dec 2022 13:40:22 +0330 Subject: [PATCH 5/6] Update 'Type' section - apply suggestion --- 1-js/02-first-steps/05-types/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index 7329da3f6..46ea20152 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -216,7 +216,7 @@ alert(x); // "undefined" نوع `object` (شیء) از انواع خاص است. -انواع مختلف داده که تا اینجا مطالعه کردیم از انواع «primitive» بودند چرا که مقدار آنها فقط شامل یک چیز می‌شد (رشته یا عدد یا هر چیز دیگری). در مقابل، شیءها برای ذخیره مجموعه‌ای از داده‌ها به شکلی پیچیده‌تر استفاده می‌شوند. +انواع مختلف داده که تا اینجا مطالعه کردیم از انواع «primitive» (اولیه) بودند چرا که مقدار آنها فقط شامل یک چیز می‌شد (رشته یا عدد یا هر چیز دیگری). در مقابل، شیءها برای ذخیره مجموعه‌ای از داده‌ها به شکلی پیچیده‌تر استفاده می‌شوند. شیءها به حدی مهم هستند که لایق طرز برخورد ویژه‌ای هستند. ما بعدا در فصل به سراغ آنها خواهیم رفت، بعد از اینکه درباره انواع primitive بیشتر یاد گرفتیم. From dfae98edb005d7d3003f564f247fd8c0ad5449f1 Mon Sep 17 00:00:00 2001 From: Bexacuter Date: Thu, 8 Dec 2022 14:25:07 +0330 Subject: [PATCH 6/6] Update 'Type' section - apply suggestion --- 1-js/02-first-steps/05-types/1-string-quotes/solution.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1-js/02-first-steps/05-types/1-string-quotes/solution.md b/1-js/02-first-steps/05-types/1-string-quotes/solution.md index 12f5a674d..3a7406457 100644 --- a/1-js/02-first-steps/05-types/1-string-quotes/solution.md +++ b/1-js/02-first-steps/05-types/1-string-quotes/solution.md @@ -4,12 +4,12 @@ Backticks عبارت داخل `{...}$` را در رشته قرار می‌دهد ```js run let name = "Ilya"; -// the expression is a number 1 +// عبارت، عدد 1 است alert( `hello ${1}` ); // hello 1 -// the expression is a string "name" +// است "name" عبارت، رشته alert( `hello ${"name"}` ); // hello name -// the expression is a variable, embed it +// عبارت، یک متغیر است، مقدار آن را داخل رشته قرار می‌دهد alert( `hello ${name}` ); // hello Ilya ```