Skip to content

translate part 1, 2.16- functions, 2.17 arrow function basics to AR #68

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 2 commits into from
Jun 6, 2020
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
6 changes: 3 additions & 3 deletions 1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@

# قم بتحويل 'if' إلى '?'

قم بإعادة كتابة `if` باستخدام معامل الشرط `'?'`:
قم بإعادة كتابة `if` باستخدام عامل الشرط `'?'`:

```js
let result;

if (a + b < 4) {
result = 'تحت';
result = "تحت";
} else {
result = 'فوق';
result = "فوق";
}
```
16 changes: 8 additions & 8 deletions 1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@

# قم بتحويل 'if..else' إلى '?'

قم بإعادة كتابة `if..else` باستخدام العديد من معامل الشرط `'?'`.
قم بإعادة كتابة `if..else` باستخدام العديد من عامل الشرط `'?'`.

ينصح بتقسيم الكود إلى أكثر من سطر ليكون مقروء.

```js
let message;

if (login == 'Employee') {
message = 'مرحبًا';
} else if (login == 'Director') {
message = 'تحياتي';
} else if (login == '') {
message = 'لا دخول';
if (login == "Employee") {
message = "مرحبًا";
} else if (login == "Director") {
message = "تحياتي";
} else if (login == "") {
message = "لا دخول";
} else {
message = '';
message = "";
}
```
71 changes: 39 additions & 32 deletions 1-js/02-first-steps/10-ifelse/article.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# المعامل الشرطي: if, '?'
# العامل الشرطي: if, '?'

أحيانًا نريد تنفيذ أوامر مختلفة إعتمادًا على حالات مختلفة.

لعمل هذا يمكننا استخدام عبارة `if` والمعامل الشرطي `?`, الذي يسمى أيضًا معامل "علامة الاستفهام".
لعمل هذا يمكننا استخدام عبارة `if` والالعامل الشرطي `?`, الذي يسمى أيضًا العامل "علامة الاستفهام".

## عبارة "if"

Expand All @@ -24,8 +24,8 @@ if (year == 2015) alert( 'إجابة صحيحة!' );

```js
if (year == 2015) {
alert( "هذه صحيح!" );
alert( "أنت ذكي!" );
alert("هذه صحيح!");
alert("أنت ذكي!");
}
```

Expand All @@ -37,8 +37,8 @@ if (year == 2015) {

دعنا نراجع على قواعد التحويل من هذا الدرس <info:type-conversions>:

- الرقم `0`, النص الفارغ `""`, `null`, `undefined`, و `NaN` يصبحون `false`. ولهذا السبب يسمون "falsy" قيم.
- القيم الأخرى تصبح `true`, ولهذا يسمون "truthy".
- الرقم `0`, النص الفارغ `""`, `null`, `undefined`, و `NaN` يصبحون `false`. ولهذا السبب يسمون "falsy" قيم.
- القيم الأخرى تصبح `true`, ولهذا يسمون "truthy".

لذلك فإن الأوامر المكتوبة تحت هذا الشرط لن تنفذ أبدًا:

Expand All @@ -59,7 +59,7 @@ if (1) { // 1 يكون truthy
يمكننا أيضًا تمرير قيمة منطقية مسبقة التنفيذ إلى `if`, مثل:

```js
let cond = (year == 2015); // معامل التساوي ينتج true أو false
let cond = (year == 2015); // عامل التساوي ينتج true أو false

if (cond) {
...
Expand All @@ -71,13 +71,14 @@ if (cond) {
عبارة `if` قد تحتوي على جزء "else" إختياري. يتم تنفيذها عندما يكون الشرط false.

على سبيل المثال:

```js run
let year = prompt('في أي عام تم نشر تخصيصات ECMAScript-2015?', '');
let year = prompt("في أي عام تم نشر تخصيصات ECMAScript-2015?", "");

if (year == 2015) {
alert( 'تخمينك صحيح!' );
alert("تخمينك صحيح!");
} else {
alert( 'كيف يمكنك أن تخطئ ؟' ); // any value except 2015
alert("كيف يمكنك أن تخطئ ؟"); // any value except 2015
}
```

Expand All @@ -88,22 +89,22 @@ if (year == 2015) {
على سبيل المثال:

```js run
let year = prompt('في أي عام تم نشر تخصيصات ECMAScript-2015?', '');
let year = prompt("في أي عام تم نشر تخصيصات ECMAScript-2015?", "");

if (year < 2015) {
alert( 'مبكر جدًا' );
alert("مبكر جدًا");
} else if (year > 2015) {
alert( 'متأخر جدًا' );
alert("متأخر جدًا");
} else {
alert( 'تمامًا' );
alert("تمامًا");
}
```

في الكود السابق, تقوم الجافاسكربت أولًا بفحص `year < 2015`. إذا كان خطأ, تنتقل للشرط التالي `year > 2015`. إذا كان خطأ أيضًا تعرض آخر `alert`.

يمكن أن يوجد العديد من `else if` . آخر `else` إختيارية.

## المعامل الشرطي '?'
## العامل الشرطي '?'

أحيانا نريد تخصيص قيمة متغير بناءًا على شرط معين.

Expand All @@ -124,11 +125,12 @@ if (age > 18) {
alert(accessAllowed);
```

المعامل الشرطي أو معامل علامة الاستفهام يمكننا من فعل هذا في سطر بسيط.
العامل الشرطي أو عامل علامة الاستفهام يمكننا من فعل هذا في سطر بسيط.

يتم تمثيله بعلامة استفهام `?`. أحيانا يسمى "ternary" لأن له 3 معاملات. وهو المعامل الوحيد في الجافاسكربت الذي له هذا العدد من المعاملات.
يتم تمثيله بعلامة استفهام `?`. أحيانا يسمى "ternary" لأن له 3 معاملات. وهو العامل الوحيد في الجافاسكربت الذي له هذا العدد من المعاملات.

طريقة كتابته كالتالي:

```js
let result = condition ? value1 : value2;
```
Expand All @@ -138,23 +140,23 @@ let result = condition ? value1 : value2;
على سبيل المثال:

```js
let accessAllowed = (age > 18) ? true : false;
let accessAllowed = age > 18 ? true : false;
```

يمكننا تجاهل الأقواس حول `age > 18`. هذا المعامل لديه أولوية أقل ولهذا يتم تنفيذه بعد عملية المقارنة `>`.
يمكننا تجاهل الأقواس حول `age > 18`. هذا العامل لديه أولوية أقل ولهذا يتم تنفيذه بعد عملية المقارنة `>`.

هذا المثال مطابق للمثال السابق:

```js
// معامل المقارنة "age > 18" ينفذ أولًا
// عامل المقارنة "age > 18" ينفذ أولًا
// (لا حاجة لوضعة داخل أقواس)
let accessAllowed = age > 18 ? true : false;
```

لكن الأقواس تجعل الكود مقروء أكثر ولذلك ننصح باستخدامها

````smart
في المثال السابق يمكننا عدم استخدام المعامل الشرطي لأن عملية المقارنة ترجع `true/false`:
في المثال السابق يمكننا عدم استخدام العامل الشرطي لأن عملية المقارنة ترجع `true/false`:

```js
// مثل
Expand All @@ -167,15 +169,20 @@ let accessAllowed = age > 18;
تتابع `?` يمكنه إرجاع قيمة تعتمد على أكثر من شرط.

على سبيل المثال:

```js run
let age = prompt('العمر؟', 18);
let age = prompt("العمر؟", 18);

let message = (age < 3) ? 'مرحبًا يا صغيري!' :
(age < 18) ? 'أهلا!' :
(age < 100) ? 'تحياتي!' :
'يا له من عمر غير عادي!';
let message =
age < 3
? "مرحبًا يا صغيري!"
: age < 18
? "أهلا!"
: age < 100
? "تحياتي!"
: "يا له من عمر غير عادي!";

alert( message );
alert(message);
```

ربما يكون من الصعب معرفة ما يحدث ولكن إذا نظرنا عن قرب سنجد أنه مجرد تتابع لمجموعة إختبارات:
Expand All @@ -189,13 +196,13 @@ alert( message );

```js
if (age < 3) {
message = 'مرحبًا يا صغيري!';
message = "مرحبًا يا صغيري!";
} else if (age < 18) {
message = 'أهلا!';
message = "أهلا!";
} else if (age < 100) {
message = 'تحياتي!';
message = "تحياتي!";
} else {
message = 'يا له من عمر غير عادي!';
message = "يا له من عمر غير عادي!";
}
```

Expand All @@ -216,7 +223,7 @@ let company = prompt('أي شركة أنشأت الجافاسكربت ؟', '');

هنا لم نقم بتخصيص قيم مختلفة لمتغير بل قمنا بتنفيذ أوامر مختلفة اعتمادًا على الشرط

**لا ينصح باستخدام المعامل بهذه الطريقة.**
**لا ينصح باستخدام العامل بهذه الطريقة.**

هذا التعبير مختصر عن عبارة `if` ولكنه أقل قراءة.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,15 @@
```js run
// ينفذ
// نتيجة -1 || 0 = -1 هي truthy
if (-1 || 0) alert( 'first' );
if (-1 || 0) alert("first");

// لا ينفذ
// -1 && 0 = 0, falsy
if (-1 && 0) alert( 'second' );
if (-1 && 0) alert("second");

// ينفذ
// المعامل && له أولوية أعلى من ||
// العامل && له أولوية أعلى من ||
// لذلك يتم تنفيذ -1 && 1 أولا وينتج التالي:
// null || -1 && 1 -> null || 1 -> 1
if (null || -1 && 1) alert( 'third' );
if (null || (-1 && 1)) alert("third");
```

Loading