مقدارهای truthy و falsy
با String()، Number() و Boolean() بلد شدید جورِ مقدار را عوض کنید. مهارت بعدی این است که بفهمید همان مقدارها داخل تصمیم چطور رفتار میکنند — حتی قبل از فصل کامل if / else. مقدارهایی که مثل «نه» عمل میکنند falsy نام دارند. تقریباً هر چیز دیگر truthy است. یکبار فهرست کوتاه falsy را حفظ کنید؛ بعداً کلی سردرگمی کم میشود.
truthy و falsy در JavaScript یعنی چه؟
falsy یعنی در شرط، موتور با آن مقدار مثل 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 — اینبار روی صفحه.
خودتان امتحان کنید
- برای هر عضو چکلیست falsy،
Booleanرا لاگ کنید. 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 هستند - بعدی: عملگرها — نمادهایی که حساب و مقایسه میکنند
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود