96 lines
5.2 KiB
Markdown
96 lines
5.2 KiB
Markdown
|
---
|
||
|
title: Boolean
|
||
|
localeTitle: منطقية
|
||
|
---
|
||
|
## منطقية
|
||
|
|
||
|
Booleans هي نوع بيانات بدائي شائع الاستخدام في لغات برمجة الكمبيوتر. بحكم التعريف ، يحتوي المنطقي على قيمتين محتملتين: `true` أو `false` .
|
||
|
|
||
|
في Javascript ، غالبًا ما يكون هناك نوع الإكراه الضمني للقيمة المنطقية. إذا كان لديك مثلاً عبارة if تتحقق من تعبير معين ، فسيتم فرض هذا التعبير على قيمة منطقية:
|
||
|
|
||
|
`var a = 'a string';
|
||
|
if (a) {
|
||
|
console.log(a); // logs 'a string'
|
||
|
}
|
||
|
`
|
||
|
|
||
|
هناك بعض القيم القليلة التي سيتم فرضها على false:
|
||
|
|
||
|
* كاذبة (غير مجبرة حقًا لأنها خاطئة بالفعل)
|
||
|
* لا شيء
|
||
|
* غير محدد
|
||
|
* نان
|
||
|
* 0
|
||
|
* '' (سلسلة فارغة)
|
||
|
|
||
|
سيتم فرض جميع القيم الأخرى إلى true. عندما تُكرَه القيمة إلى قيمة منطقية ، فإننا نطلق عليها أيضًا إما "كاذبة" أو "صادقة".
|
||
|
|
||
|
إحدى الطرق التي يتم بها استخدام نوع الإكراه هي استخدام مشغلي (أو `||` ) و ( `&&` ):
|
||
|
|
||
|
`var a = 'word';
|
||
|
var b = false;
|
||
|
var c = true;
|
||
|
var d = 0
|
||
|
var e = 1
|
||
|
var f = 2
|
||
|
var g = null
|
||
|
|
||
|
console.log(a || b); // 'word'
|
||
|
console.log(c || a); // true
|
||
|
console.log(b || a); // 'word'
|
||
|
console.log(e || f); // 1
|
||
|
console.log(f || e); // 2
|
||
|
console.log(d || g); // null
|
||
|
console.log(g || d); // 0
|
||
|
console.log(a && c); // true
|
||
|
console.log(c && a); // 'word'
|
||
|
`
|
||
|
|
||
|
كما ترى ، يفحص المشغل _أو_ العامل الأول. إذا كان هذا صحيحًا أو صريحًا ، فسيتم إرجاعه على الفور (وهذا هو سبب حصولنا على كلمة في الحالة الأولى وصحيح في الحالة الثانية). إذا لم يكن صحيحا أو صائبا ، فإنه يعيد المعامل الثاني (وهذا هو السبب في أننا نحصل على كلمة في الحالة الثالثة).
|
||
|
|
||
|
مع المشغل ويعمل بطريقة مماثلة ، ولكن "و" ليكون صحيحا ، يجب أن يكون كلا المعاملين صائبين. لذلك ، ستعود دائمًا إلى المعامل الثاني إذا كان كلاهما صحيحًا / صريحًا ، وإلا فسيظهر خطأ. وهذا هو السبب في أننا في الحالة الرابعة أصبحنا صادقين وفي الحالة الأخيرة حصلنا على "كلمة".
|
||
|
|
||
|
## الكائن المنطقي
|
||
|
|
||
|
يوجد أيضًا كائن JavaScript أصلي يلتف حول قيمة. القيمة التي تم تمريرها عند تحويل المعلمة الأولى إلى قيمة منطقية ، إذا لزم الأمر. إذا تم حذف القيمة ، 0 ، أو 0 ، أو خالية ، أو false ، أو NaN ، أو undefined ، أو السلسلة الفارغة ("") ، فإن الكائن له قيمة أولية خاطئة. جميع القيم الأخرى ، بما في ذلك أي كائن أو السلسلة "false" ، تقوم بإنشاء كائن بقيمة أولية صحيحة.
|
||
|
|
||
|
لا تخلط بين القيم المنطقية البدائية الصواب والخطأ مع القيم الحقيقية والخطئة للكائن المنطقي.
|
||
|
|
||
|
## المزيد من التفاصيل
|
||
|
|
||
|
يتم تقييم أي كائن لا تكون قيمته غير محددة أو خالية ، بما في ذلك كائن منطقي قيمته غير صحيح ، إلى true عند تمريره إلى بيان شرطي. إذا كان هذا صحيحًا ، فسيؤدي هذا إلى تنفيذ الوظيفة. على سبيل المثال ، يتم تقييم الشرط الموجود في العبارة if في الحالة التالية:
|
||
|
|
||
|
`var x = new Boolean(false);
|
||
|
if (x) {
|
||
|
// this code is executed
|
||
|
}
|
||
|
`
|
||
|
|
||
|
لا ينطبق هذا السلوك على الأوليات البولية. على سبيل المثال ، يتم تقييم الشرط الموجود في العبارة if في حالة الخطأ:
|
||
|
|
||
|
`var x = false;
|
||
|
if (x) {
|
||
|
// this code is not executed
|
||
|
}
|
||
|
`
|
||
|
|
||
|
لا تستخدم كائنًا منطقيًا لتحويل قيمة غير منطقية إلى قيمة منطقية. بدلاً من ذلك ، استخدم Boolean كدالة لتنفيذ هذه المهمة:
|
||
|
|
||
|
`var x = Boolean(expression); // preferred
|
||
|
var x = new Boolean(expression); // don't use
|
||
|
`
|
||
|
|
||
|
إذا قمت بتحديد أي كائن ، بما في ذلك كائن منطقي قيمته غير كاذبة ، كالقيمة الأولية لكائن Boolean ، فإن الكائن المنطقي الجديد يحتوي على قيمة true.
|
||
|
|
||
|
`var myFalse = new Boolean(false); // initial value of false
|
||
|
var g = new Boolean(myFalse); // initial value of true
|
||
|
var myString = new String('Hello'); // string object
|
||
|
var s = new Boolean(myString); // initial value of true
|
||
|
`
|
||
|
|
||
|
لا تستخدم كائن منطقي بدلاً من بدائي منطقي.
|
||
|
|
||
|
### مصادر
|
||
|
|
||
|
* [كائن بولياني](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)
|
||
|
* [كائن بولياني](https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html)
|