Skip to content

Commit

Permalink
more updating
Browse files Browse the repository at this point in the history
  • Loading branch information
TeaByte committed Jan 6, 2024
1 parent d10d376 commit 2a3e96e
Show file tree
Hide file tree
Showing 25 changed files with 282 additions and 207 deletions.
17 changes: 1 addition & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1 @@
# Fresh project

Your new Fresh project is ready to go. You can follow the Fresh "Getting
Started" guide here: https://fresh.deno.dev/docs/getting-started

### Usage

Make sure to install Deno: https://deno.land/manual/getting_started/installation

Then start the project:

```
deno task start
```

This will watch the project directory and restart as necessary.
🚧 Under Development
2 changes: 1 addition & 1 deletion components/Nav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export default function NavBar() {
<nav class="bg-base-300 w-full py-4 px-8 flex flex-col md:flex-row gap-4">
<div class="flex items-center flex-1">
<div class="flex items-center gap-1">
<image src="/logo.png" class="h-8 w-8" />
<image alt="Website logo" src="/logo.png" class="h-8 w-8" />
<a href="/" class="text-2xl ml-1 font-bold hover:animate-pulse">
NakhlahJS
</a>
Expand Down
2 changes: 1 addition & 1 deletion courses/booleans/_data.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"label": "المصفوفات",
"label": "القيم المنطقية",
"order": 8
}
20 changes: 11 additions & 9 deletions courses/booleans/bool-if-statements.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
---
sidebar_position: 2
title: القيم المنطقية والتعامل معها
snippet: قد تكون القيم المنطقية واحدة فقط من قيمتين
order: 2
---

# القيم المنطقية والتعامل معها

نوع آخر من البيانات هو ```Boolean```. قد تكون القيم المنطقية واحدة فقط من قيمتين: ```true``` أو ```false```. إنها في الأساس مفاتيح تشغيل وإيقاف صغيرة، حيث يتم تشغيل ```true``` وإيقاف ```false```. هاتان الدولتان متنافيتان.

نوع آخر من البيانات هو `Boolean`. قد تكون القيم المنطقية واحدة فقط من قيمتين:
`true` أو `false`. إنها في الأساس مفاتيح تشغيل وإيقاف صغيرة، حيث يتم تشغيل
`true` وإيقاف `false`. هاتان الدولتان متنافيتان.

:::note

لا يتم كتابة القيم المنطقية أبدًا مع علامات الاقتباس. السلاسل "true" و"false" ليست منطقية وليس لها أي معنى خاص في JavaScript.
لا يتم كتابة القيم المنطقية أبدًا مع علامات الاقتباس. السلاسل "true" و"false"
ليست منطقية وليس لها أي معنى خاص في JavaScript.

:::

Expand All @@ -18,6 +20,6 @@ function welcomeToBooleans() {
return true;
}

let t = welcomeToBooleans()
let f = false
```
let t = welcomeToBooleans();
let f = false;
```
20 changes: 11 additions & 9 deletions courses/booleans/intro.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
---
sidebar_position: 1
title: القيم المنطقية والتعامل معها
snippet: قد تكون القيم المنطقية واحدة فقط من قيمتين
order: 1
---

# القيم المنطقية والتعامل معها

نوع آخر من البيانات هو ```Boolean```. قد تكون القيم المنطقية واحدة فقط من قيمتين: ```true``` أو ```false```. إنها في الأساس مفاتيح تشغيل وإيقاف صغيرة، حيث يتم تشغيل ```true``` وإيقاف ```false```. هاتان الدولتان متنافيتان.

نوع آخر من البيانات هو `Boolean`. قد تكون القيم المنطقية واحدة فقط من قيمتين:
`true` أو `false`. إنها في الأساس مفاتيح تشغيل وإيقاف صغيرة، حيث يتم تشغيل
`true` وإيقاف `false`. هاتان الدولتان متنافيتان.

:::note

لا يتم كتابة القيم المنطقية أبدًا مع علامات الاقتباس. السلاسل "true" و"false" ليست منطقية وليس لها أي معنى خاص في JavaScript.
لا يتم كتابة القيم المنطقية أبدًا مع علامات الاقتباس. السلاسل "true" و"false"
ليست منطقية وليس لها أي معنى خاص في JavaScript.

:::

Expand All @@ -18,6 +20,6 @@ function welcomeToBooleans() {
return true;
}

let t = welcomeToBooleans()
let f = false
```
let t = welcomeToBooleans();
let f = false;
```
2 changes: 1 addition & 1 deletion courses/functions/_data.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"label": "المصفوفات",
"label": "الدوال",
"order": 8
}
15 changes: 9 additions & 6 deletions courses/functions/assignment-returned.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
---
sidebar_position: 6
title: دالة ذات قيمة تم إرجاعها
snippet: إذا كنت تتذكر مناقشتنا حول تخزين القيم مع عامل التعيين
order: 6
---

# دالة ذات قيمة تم إرجاعها
إذا كنت تتذكر مناقشتنا حول تخزين القيم مع عامل التعيين، فقد تم حل كل شيء على
يمين علامة التساوي قبل تعيين القيمة. هذا يعني أنه يمكننا أخذ القيمة المرجعة
للدالة وتخصيصها لمتغير.

إذا كنت تتذكر مناقشتنا حول تخزين القيم مع عامل التعيين، فقد تم حل كل شيء على يمين علامة التساوي قبل تعيين القيمة. هذا يعني أنه يمكننا أخذ القيمة المرجعة للدالة وتخصيصها لمتغير.
لنفترض أننا قمنا بتعريف دالة `sum` التي تجمع رقمين معًا.

لنفترض أننا قمنا بتعريف دالة ```sum``` التي تجمع رقمين معًا.
```js
ourSum = sum(5, 12);
```
يؤدي استدعاء الدالة ```sum``` باستخدام الوسيطتين ```5``` و```12``` إلى الحصول على قيمة إرجاع تبلغ ```17```. ويتم تعيين قيمة الإرجاع هذه إلى متغير ```ourSum```.

<!-- not nessessary may get removed -->
يؤدي استدعاء الدالة `sum` باستخدام الوسيطتين `5` و`12` إلى الحصول على قيمة إرجاع
تبلغ `17`. ويتم تعيين قيمة الإرجاع هذه إلى متغير `ourSum`.
12 changes: 7 additions & 5 deletions courses/functions/gblobal-vs-local.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
---
sidebar_position: 4
title: النطاق العالمي مقابل المحلي
snippet: من الممكن أن يكون لديك متغيرات محلية وعالمية بنفس الاسم
order: 4
---

# النطاق العالمي مقابل المحلي

من الممكن أن يكون لديك متغيرات محلية وعالمية بنفس الاسم. عند القيام بذلك، يكون للمتغير المحلي الأسبقية على المتغير العام.
من الممكن أن يكون لديك متغيرات محلية وعالمية بنفس الاسم. عند القيام بذلك، يكون
للمتغير المحلي الأسبقية على المتغير العام.

```js
const someVar = "Hat";
Expand All @@ -14,4 +15,5 @@ function myFun() {
return someVar;
}
```
ستقوم الدالة ```myFun``` بإرجاع السلسلة ```Head``` نظرًا لوجود الإصدار المحلي من المتغير.

ستقوم الدالة `myFun` بإرجاع السلسلة `Head` نظرًا لوجود الإصدار المحلي من المتغير.
28 changes: 16 additions & 12 deletions courses/functions/global-scope.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
---
sidebar_position: 2
keywords: [Docusaurus, Markdown, Keywords]
title: النطاق العالمي والوظائف
snippet: في JavaScript، يشير النطاق إلى رؤية المتغيرات
order: 2
---

# النطاق العالمي والوظائف
في JavaScript، يشير النطاق إلى رؤية المتغيرات. المتغيرات التي تم تعريفها خارج
كتلة الوظيفة لها نطاق عالمي. وهذا يعني أنه يمكن رؤيتها في كل مكان في كود
JavaScript الخاص بك.

في JavaScript، يشير النطاق إلى رؤية المتغيرات. المتغيرات التي تم تعريفها خارج كتلة الوظيفة لها نطاق عالمي. وهذا يعني أنه يمكن رؤيتها في كل مكان في كود JavaScript الخاص بك.

يتم إنشاء المتغيرات التي تم الإعلان عنها بدون الكلمات الأساسية Let أو const تلقائيًا في النطاق العام. يمكن أن يؤدي هذا إلى عواقب غير مقصودة في مكان آخر من التعليمات البرمجية الخاصة بك أو عند تشغيل وظيفة مرة أخرى. يجب عليك دائمًا الإعلان عن المتغيرات الخاصة بك باستخدام Let أو const.
يتم إنشاء المتغيرات التي تم الإعلان عنها بدون الكلمات الأساسية Let أو const
تلقائيًا في النطاق العام. يمكن أن يؤدي هذا إلى عواقب غير مقصودة في مكان آخر من
التعليمات البرمجية الخاصة بك أو عند تشغيل وظيفة مرة أخرى. يجب عليك دائمًا الإعلان
عن المتغيرات الخاصة بك باستخدام Let أو const.

```js
function fun1() {
x = 5
return 5
}
x = 5;
return 5;
}

console.log(fun1())
console.log(x)
```
console.log(fun1());
console.log(x);
```
41 changes: 28 additions & 13 deletions courses/functions/intro.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
---
sidebar_position: 1
title: الدوال والتعامل معها
snippet: في JavaScript، يمكننا تقسيم الكود الخاص بنا إلى أجزاء قابلة لإعادة الاستخدام
order: 1
---

# الدوال والتعامل معها

## كتابة الدوال

في JavaScript، يمكننا تقسيم الكود الخاص بنا إلى أجزاء قابلة لإعادة الاستخدام تسمى الدوال او الدوال ([Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)).
في JavaScript، يمكننا تقسيم الكود الخاص بنا إلى أجزاء قابلة لإعادة الاستخدام
تسمى الدوال او الدوال
([Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)).

```js
function functionName() {
console.log("Hello World");
}
```

يمكنك استدعاء هذه الوظيفة أو استخدامها باستخدام اسمها متبوعًا بأقواس، مثل هذا: ```;()functionName``` في كل مرة يتم استدعاء الوظيفة، سيتم طباعة الرسالة ```Hello World``` على وحدة تحكم المطور. سيتم تنفيذ كافة التعليمات البرمجية الموجودة بين الأقواس المتعرجة في كل مرة يتم فيها استدعاء الوظيفة.
يمكنك استدعاء هذه الوظيفة أو استخدامها باستخدام اسمها متبوعًا بأقواس، مثل هذا:
`;()functionName` في كل مرة يتم استدعاء الوظيفة، سيتم طباعة الرسالة
`Hello World` على وحدة تحكم المطور. سيتم تنفيذ كافة التعليمات البرمجية الموجودة
بين الأقواس المتعرجة في كل مرة يتم فيها استدعاء الوظيفة.

```js
function functionName() {
Expand All @@ -25,20 +30,27 @@ functionName();
functionName();
functionName();
```
سيتم طباعة الرسالة ```Hello World``` ثلاث مرات

سيتم طباعة الرسالة `Hello World` ثلاث مرات

## تمرير القيم إلى الدوال

المعلمات هي متغيرات تعمل كعناصر نائبة للقيم التي سيتم إدخالها إلى دالة عند استدعائها. عندما يتم تعريف دالة، يتم تعريفها عادةً مع معلمة واحدة أو أكثر. تُعرف القيم الفعلية التي يتم إدخالها (أو "تمريرها") إلى دالة عند استدعائها بالوسيطات.
المعلمات هي متغيرات تعمل كعناصر نائبة للقيم التي سيتم إدخالها إلى دالة عند
استدعائها. عندما يتم تعريف دالة، يتم تعريفها عادةً مع معلمة واحدة أو أكثر. تُعرف
القيم الفعلية التي يتم إدخالها (أو "تمريرها") إلى دالة عند استدعائها بالوسيطات.

فيما يلي دالة تحتوي على معلمتين، ```param1``` و```param2```:
فيما يلي دالة تحتوي على معلمتين، `param1` و`param2`:

```js
function testFun(param1, param2) {
console.log(param1, param2);
}
```
ثم يمكننا استدعاء ```testFun``` على النحو التالي: ```testFun("Hello", "World");```. لقد مررنا وسيطتين متسلسلتين، ```Hello``` و ```World```. داخل الدالة، ```param1``` ستساوي السلسلة ```Hello``` و ```param2``` ستساوي السلسلة ```World```. لاحظ أنه يمكنك استدعاء ```testFun``` مرة أخرى باستخدام وسائط مختلفة وستأخذ المعلمات قيمة الوسائط الجديدة.

ثم يمكننا استدعاء `testFun` على النحو التالي: `testFun("Hello", "World");`. لقد
مررنا وسيطتين متسلسلتين، `Hello` و `World`. داخل الدالة، `param1` ستساوي السلسلة
`Hello` و `param2` ستساوي السلسلة `World`. لاحظ أنه يمكنك استدعاء `testFun` مرة
أخرى باستخدام وسائط مختلفة وستأخذ المعلمات قيمة الوسائط الجديدة.

```js
function testFun(param1, param2) {
Expand All @@ -47,11 +59,13 @@ function testFun(param1, param2) {
testFun("Hello", "World");
testFun("Ahmed", "Mohsen");
```
سيتم طباعة الرسالة ```Hello World``` و ```Ahmed Mohsen```

سيتم طباعة الرسالة `Hello World` و `Ahmed Mohsen`

## إرجاع قيمة من دالة

يمكننا تمرير القيم إلى دالة باستخدام الوسائط. يمكنك استخدام عبارة ```return``` لإرسال قيمة مرة أخرى خارج الوظيفة.
يمكننا تمرير القيم إلى دالة باستخدام الوسائط. يمكنك استخدام عبارة `return`
لإرسال قيمة مرة أخرى خارج الوظيفة.

```js
function plusThree(num) {
Expand All @@ -60,6 +74,7 @@ function plusThree(num) {

const answer = plusThree(5);
```
```answer``` له القيمة ```8```.

يأخذ ```plusThree``` وسيطة لـ ```num``` ويعيد قيمة تساوي ```num + 3```.
`answer` له القيمة `8`.

يأخذ `plusThree` وسيطة لـ `num` ويعيد قيمة تساوي `num + 3`.
16 changes: 10 additions & 6 deletions courses/functions/local-scope.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
---
sidebar_position: 3
keywords: [Docusaurus, Markdown, Keywords]
title: النطاق المحلي والوظائف
snippet: المتغيرات التي تم الإعلان عنها داخل الدالة
order: 3
---

# النطاق المحلي والوظائف
المتغيرات التي تم الإعلان عنها داخل الدالة، بالإضافة إلى معلمات الدالة، لها نطاق
محلي. وهذا يعني أنها مرئية فقط داخل تلك الوظيفة.

المتغيرات التي تم الإعلان عنها داخل الدالة، بالإضافة إلى معلمات الدالة، لها نطاق محلي. وهذا يعني أنها مرئية فقط داخل تلك الوظيفة.
إليك دالة `myTest` مع متغير محلي يسمى `loc`.

إليك دالة ```myTest``` مع متغير محلي يسمى ```loc```.
```js
function myTest() {
const loc = "foo";
Expand All @@ -17,4 +18,7 @@ function myTest() {
myTest();
console.log(loc);
```
سيعرض استدعاء الدالة ```()myTest``` السلسلة ```foo``` في وحدة التحكم. سيتسبب سطر ```console.log(loc)``` (خارج الدالة ```myTest```) في حدوث خطأ، حيث لم يتم تعريف ```loc``` خارج الدالة.

سيعرض استدعاء الدالة `()myTest` السلسلة `foo` في وحدة التحكم. سيتسبب سطر
`console.log(loc)` (خارج الدالة `myTest`) في حدوث خطأ، حيث لم يتم تعريف `loc`
خارج الدالة.
15 changes: 9 additions & 6 deletions courses/functions/undefined-return.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
---
sidebar_position: 5
title: فهم القيمة غير المحددة المرجعة
snippet: يمكن أن تتضمن الوظيفة بيان الإرجاع ولكن ليس من الضروري ذلك
order: 5
---

# فهم القيمة غير المحددة المرجعة

يمكن أن تتضمن الوظيفة بيان الإرجاع ولكن ليس من الضروري ذلك. في حالة عدم احتواء الدالة على عبارة إرجاع، فعند استدعائها، تقوم الدالة بمعالجة الكود الداخلي ولكن القيمة التي يتم إرجاعها غير محددة (undefined).

يمكن أن تتضمن الوظيفة بيان الإرجاع ولكن ليس من الضروري ذلك. في حالة عدم احتواء
الدالة على عبارة إرجاع، فعند استدعائها، تقوم الدالة بمعالجة الكود الداخلي ولكن
القيمة التي يتم إرجاعها غير محددة (undefined).

```js
let sum = 0;
Expand All @@ -16,4 +17,6 @@ function addSum(num) {

addSum(3);
```
```addSum``` هي دالة بدون عبارة إرجاع. ستقوم الدالة بتغيير متغير ```sum``` العام ولكن القيمة التي تم إرجاعها للدالة هي ```undefined```.

`addSum` هي دالة بدون عبارة إرجاع. ستقوم الدالة بتغيير متغير `sum` العام ولكن
القيمة التي تم إرجاعها للدالة هي `undefined`.
2 changes: 1 addition & 1 deletion courses/strings/_data.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"label": "المصفوفات",
"label": "السلاسل",
"order": 6
}
22 changes: 13 additions & 9 deletions courses/strings/bracket-examples.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,39 @@
---
sidebar_position: 6
title: أمثلة على استخدام الأقواس
snippet: استخدم الأقواس للعثور على الحرف N في سلسلة
order: 6
---

# أمثلة على استخدام الأقواس

## استخدم الأقواس للعثور على الحرف N في سلسلة

يمكنك أيضًا استخدام تدوين الأقواس للحصول على الحرف في مواضع أخرى داخل السلسلة.

تذكر أن أجهزة الكمبيوتر تبدأ العد عند 0، وبالتالي فإن الحرف الأول هو في الواقع الحرف الصفري.
تذكر أن أجهزة الكمبيوتر تبدأ العد عند 0، وبالتالي فإن الحرف الأول هو في الواقع
الحرف الصفري.

```js
const firstName = "Ada";
const secondLetterOfFirstName = firstName[1];
```
سيكون لـ ```SecondLetterOfFirstName``` قيمة السلسلة ```d```.

سيكون لـ `SecondLetterOfFirstName` قيمة السلسلة `d`.

## استخدم الأقواس للعثور على الحرف الأخير في سلسلة

للحصول على الحرف الأخير من السلسلة، يمكنك طرح حرف واحد من طول السلسلة.

على سبيل المثال، إذا كان ```const firstName = "Ada"```، فيمكنك الحصول على قيمة الحرف الأخير من السلسلة باستخدام ```firstName[firstName.length - 1]```.
على سبيل المثال، إذا كان `const firstName = "Ada"`، فيمكنك الحصول على قيمة الحرف
الأخير من السلسلة باستخدام `firstName[firstName.length - 1]`.

```js
const firstName = "Ada";
const lastLetter = firstName[firstName.length - 1];
```
```lastLetter``` سيكون له قيمة السلسلة ```a```.

`lastLetter` سيكون له قيمة السلسلة `a`.

<!-- quiz make use get the char last the last letter -->
<!--
<!--
const firstName = "Augusta";
const thirdToLastLetter = firstName[firstName.length - 3];
-->
-->
Loading

0 comments on commit 2a3e96e

Please sign in to comment.