القيم truthy و falsy
تعرف الآن تحويل القيم بـ String() وNumber() وBoolean(). المهارة التالية: كيف تتصرف تلك القيم داخل قرار — حتى قبل درس if / else الكامل. القيم التي تتصرف كـ «لا» تُسمّى falsy. تقريباً كل ما عداها truthy. احفظ قائمة falsy القصيرة مرة واحدة؛ ستوفّر كثيراً من الحيرة لاحقاً.
ما معنى truthy و falsy في JavaScript؟
falsy يعني: في الشرط يعاملها JavaScript مثل false. truthy يعني: مثل true. ليست نوع بيانات جديداً — نفس الأرقام والنصوص التي تعرفها. عاين بـ Boolean(value) أو اكتب if (value) واترك المحرك يطبّق نفس القاعدة. للمبتدئ تكفي قائمة falsy؛ الباقي غالباً truthy.
قائمة falsy
📊 قيم falsy يجب أن تعرفها
| القيمة | لماذا تبدو «فارغة / لا» | ملاحظة |
|---|---|---|
false |
النفي المنطقي | كلمة مفتاحية |
0 |
صفر رقمي | وكذلك -0 |
"" |
نص فارغ | طول صفر |
null |
فراغ مقصود | من درس سابق |
undefined |
لا قيمة بعد | من درس سابق |
NaN |
رقم فاشل | typeof ما زال "number" |
هذه القائمة تكفي للبداية. احفظ falsy لا كتالوجاً لا نهائياً من truthy. إن لم تكن القيمة في القائمة، اعتبرها truthy حتى يقول درس لاحق غير ذلك.
شاهد falsy مع Boolean()
Boolean(...) معاينة واضحة. كل عنصر في القائمة يصبح false.
console.log(Boolean(false));
console.log(Boolean(0));
console.log(Boolean(""));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));
للمبتدئ، الافتراضي truthy
النصوص غير الفارغة ومعظم الأرقام وtrue نفسه truthy. المفاجآت الأولى غالباً نصوص تبدو كـ «لا» لكن فيها أحرف.
console.log(Boolean(1));
console.log(Boolean(-3));
console.log(Boolean("hi"));
console.log(Boolean("0"));
console.log(Boolean("false"));
console.log(Boolean(" "));
"0" و"false" truthy لأنهما نص غير فارغ. المسافة الواحدة " " أيضاً truthy — بين النصوص العادية فقط "" (طول صفر) falsy.
if بلا استدعاء Boolean()
if (value) البسيط يستخدم نفس القاعدة. لا تحتاج if (Boolean(value)). أسلوب التفريع الكامل يأتي لاحقاً؛ هنا فقط بوابة نعم/لا.
let name = "Ada";
if (name) {
console.log("name is truthy");
}
let empty = "";
if (empty) {
console.log("will not run");
} else {
console.log("empty string is falsy");
}
فخاخ النص: "0" و "false"
النماذج وواجهات API غالباً ترسل نصاً. النص "0" ليس الرقم 0. النص "false" ليس المنطقي false. كلاهما truthy.
console.log(Boolean("0"));
console.log(Boolean(0));
console.log(Boolean("false"));
console.log(Boolean(false));
console.log("0" === 0);
النص الفارغ مقابل مسافة واحدة
بين النصوص العادية فقط "" بطول صفر هو falsy. المسافة ما زالت محتوى.
console.log(Boolean(""));
console.log(Boolean(" "));
console.log("".length);
console.log(" ".length);
تحكّم برسالة الصفحة بقيمة واحدة
قرّر ماذا يرى الزائر بقيمة واحدة. غيّرها وحدّث الصفحة.
<!DOCTYPE html>
<html>
<head>
<title>Truthy falsy — page gate</title>
</head>
<body>
<p id="msg">…</p>
<script>
let user = "Sam";
let box = document.getElementById("msg");
if (user) {
box.textContent = "Hello, " + user;
} else {
box.textContent = "Please sign in";
}
</script>
</body>
</html>
اجعل user يساوي "" أو null ثم حدّث؛ تتحول الرسالة إلى سطر تسجيل الدخول. نفس قاعدة falsy — على الصفحة.
جرّبها بنفسك
- اطبع
Booleanلكل عنصر في قائمة falsy. - اطبع
Boolean("0")وBoolean(0)جنباً إلى جنب. - اطبع
Boolean(" ")وBoolean("")— مسافة مقابل فارغ. - اكتب
if (score)صغيراً معscore = 0ثم معscore = 5. - في عرض HTML اجعل
user = ""وحدّث واقرأ الرسالة. - غيّر
userإلى"0"ولاحظ أن التحية ما زالت تعمل (نص truthy).
أخطاء شائعة
- اعتبار
"false"أو"0"قيم falsy — كلاهما نص غير فارغ - الظن أنك يجب دائماً لف
Boolean()—if (value)يحوّل أصلاً - حفظ كل قيم truthy بدل قائمة falsy القصيرة
- خلط الرقم
0(falsy) مع النص"0"(truthy) - نسيان
nullأوundefinedأوNaNمن القائمة
ملخص
- falsy: يتصرف كـ
falseفي الشرط — احفظ القائمة القصيرة - truthy: يتصرف كـ
true— معظم القيم اليومية - عاين بـ
Boolean(value)أو استخدمif (value)مباشرة - فخاخ النص:
"0"و"false"قيم truthy - التالي: العوامل — رموز للحساب والمقارنة
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى