Skip to content

Commit 2f13a5b

Browse files
authored
fix conflicts --1/4/7
1 parent c177f56 commit 2f13a5b

1 file changed

Lines changed: 4 additions & 22 deletions

File tree

  • 1-js/04-object-basics/07-optional-chaining

1-js/04-object-basics/07-optional-chaining/article.md

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,8 @@ alert( user && user.address && user.address.street ); // يظهر لنا undefin
4040

4141
يؤدي التسلسل الاختياري `.?` إلى إيقاف تقييم الكود البرمجي وإرجاع `undefined` إذا كانت قيمة الجزء الموجود قبل (أيسر) التركيب `.?` هي `null` أو `undfined`.
4242

43-
<<<<<<< HEAD
4443
وللإيجاز، سنقول ضمن هذه المقالة أن شيئاً ما "موجود" إذا لم تكن قيمته `null` ولم تكن `undefined` كذلك.
4544

46-
=======
47-
**Further in this article, for brevity, we'll be saying that something "exists" if it's not `null` and not `undefined`.**
48-
>>>>>>> c3a11c85e54153ebb137b5541b1d1f751c804439
49-
5045
وأما الطريقة الآمنة للوصول لـِ `user.address.street` هي:
5146

5247
```js run
@@ -64,17 +59,13 @@ alert( user?.address ); // undefined
6459
alert( user?.address.street ); // undefined
6560
```
6661
67-
<<<<<<< HEAD
6862
يرجى ملاحظة أن التركيب أو الشقّ `.?` يعمل بشكل صحيح حيث يتم وضعه بالضبط، وليس بعد ذلك المكان الذي تم وضعه فيه.
6963
70-
في السطرين الأخيرين، سيتوقف تقييم الكود البرمجي بشكل فوري بعد الشقّ `.?user` ولا يستمر أبداً للخصائص التي تليه. ولكن إذا كان الغرض `user` موجوداً بالفعل، فيجب أن تكون الخصائص الوسيطة موجودة ونقصد بالخصائص الوسيطة `user.address` مثلاً.
71-
=======
72-
Please note: the `?.` syntax makes optional the value before it, but not any further.
64+
في السطرين الأخيرين، سيتوقف تقييم الكود البرمجي بشكل فوري بعد الشقّ `.?user` ولا يستمر أبداً للخصائص التي تليه.
7365
74-
In the example above, `user?.` allows only `user` to be `null/undefined`.
66+
يقوم التسلسل الاختياري فقط باختبار القيم `null/undefined`، ولا يتداخل مع ميكانيكية أي من اللغات الأخرى.
7567
76-
On the other hand, if `user` does exist, then it must have `user.address` property, otherwise `user?.address.street` gives an error at the second dot.
77-
>>>>>>> c3a11c85e54153ebb137b5541b1d1f751c804439
68+
ولكن إذا كان الغرض `user` موجوداً بالفعل، فيجب أن تكون الخصائص الوسيطة موجودة ونقصد بالخصائص الوسيطة `user.address` مثلاً.
7869
7970
```warn header="لا تفرط في استخدام تركيب التسلسل الاختياري"
8071
يجب أن نستخدم التركيب `.?` فقط عندما يكون هناك غرض، كائن أو خاصية غير موجودة بالأصل.
@@ -84,23 +75,14 @@ On the other hand, if `user` does exist, then it must have `user.address` proper
8475
وبالتالي، إذا كان غرض المستخدم `user` غير معرف بسبب خطأ ما، فسوف نعرف عن هذا الخطأ ونصلحه. وإلا ستتسبب هذه الطريقة بإسكات الأخطاء البرمجية وقد لا يكون ذلك مناسباً، بل سيصبح من الصعب تصحيح هذه الأخطاء وكشفها.
8576
```
8677
87-
<<<<<<< HEAD
8878
````warn header="المتحول الواقع قبل التركيب `.?` يجب أن يكون معرّفاً"
8979
إذا لم يتمّ تعريف المتحول `user`، سيؤدي التعبير `user?.anything` إلى حصول خطأ:
90-
=======
91-
````warn header="The variable before `?.` must be declared"
92-
If there's no variable `user` at all, then `user?.anything` triggers an error:
93-
>>>>>>> c3a11c85e54153ebb137b5541b1d1f751c804439
9480
9581
```js run
9682
// ReferenceError: user is not defined
9783
user?.address;
9884
```
99-
<<<<<<< HEAD
100-
يقوم التسلسل الاختياري فقط باختبار القيم `null/undefined`، ولا يتداخل مع ميكانيكية أي من اللغات الأخرى.
101-
=======
102-
There must be `let/const/var user`. The optional chaining works only for declared variables.
103-
>>>>>>> c3a11c85e54153ebb137b5541b1d1f751c804439
85+
10486
````
10587
10688
## اختصار الطرق (Short-circuiting)

0 commit comments

Comments
 (0)