عملگرهای منطقی
مقایسه یک جواب بله/خیر داد. در کار واقعی اغلب چند جواب با هم لازم است: هم سن کافی باشد و هم نمره؟ عضو است یا مهمان اجازه دارد؟ ابزاری که این جوابها را به هم وصل یا برعکس میکند عملگر منطقی است: && و || و !. truthy و falsy را بلدید؛ اینجا سه نماد روزمره را میخوانید و به booleanی که میسازند تکیه میکنید.
عملگر منطقی یعنی چه؟
عملگر منطقی با مقدارهای شبیه boolean کار میکند. چیزی داخل نام ذخیره نمیکند (=) و نمیپرسد «مقدار یکی است؟» (===). یا چند جواب بله/خیر را ترکیب میکند، یا یکی را برعکس میکند. بعد از true && false نتیجه false است. بعد از true || false نتیجه true است. بعد از !false نتیجه true است. همان boolean را میتوانید لاگ کنید، در متغیر نگه دارید، یا روی صفحه بنویسید.
نگاه سریع به عملگرها
📊 عملگرهای منطقی روزمره
| عملگر | خواندن روزمره | نتیجهٔ نمونه |
|---|---|---|
&& |
هر دو طرف قبولاند؟ | true && true → true |
! |
بله/خیر را برعکس کن | !false → true |
این جدول را دم دست بگذارید. برای شروع، به این عملگرها boolean شفاف بدهید — از مقایسه (age >= 18) یا خود true / false. مقدارهای دیگر هم truthy یا falsy حساب میشوند، ولی با بله/خیر صادق کمتر گیج میشوید.
console.log(true && true);
console.log(true && false);
console.log(false && true);
console.log(false && false);
let ok = true;
console.log(ok && true);
&& هر دو طرف را میخواهد
دو علامت & یعنی «و». برای اینکه کل عبارت truthy شود، هر دو طرف باید truthy باشند. اگر سمت چپ رد شود، جواب ترکیبی از همان اول خیر است — «نیمهبله» وجود ندارد.
کنسول بهترتیب true، false، false، false، true میدهد. فقط خط اول و آخر هر دو طرف را پاس میکنند. مثل دری با دو قفل: هر دو کلید باید بچرخد.
console.log(true || true);
console.log(true || false);
console.log(false || true);
console.log(false || false);
let guest = false;
console.log(guest || true);
|| یک طرف کافی است
دو خط عمودی یعنی «یا». اگر حداقل یک طرف truthy باشد، کل عبارت truthy است. فقط وقتی هر دو طرف رد شوند false میگیرید.
خروجی true، true، true، false، true است. فقط خط چهارم کامل میبازد. یک راه باز کافی است — مثل دری با دو کلید جدا که هر کدام بهتنهایی باز میکند.
console.log(!true);
console.log(!false);
let ready = false;
console.log(!ready);
let open = true;
console.log(!open);
! جواب را برمیگرداند
یک ! جلوی عبارت یعنی «نه». truthy میشود falsy و برعکس. وقتی میخواهید بپرسید «هنوز آماده نیست؟» بدون اینکه مقایسه را دوباره بنویسید، !ready بهکار میآید.
کنسول false، true، true، false چاپ میکند. ready برابر false بود، پس !ready میشود true. open برابر true بود، پس !open میشود false.
let age = 20;
let score = 75;
console.log(age >= 18 && score >= 60);
console.log(age >= 18 && score >= 90);
let member = false;
let pass = true;
console.log(member || pass);
چند مقایسه را به یک چک تبدیل کنید
منطق روزمره معمولاً دور نتیجهٔ مقایسه میپیچد. age >= 18 && score >= 60 دو سؤال رتبهبندی میپرسد و با «و» وصلشان میکند. member || pass میپرسد آیا حداقل یک مسیر باز است. سؤال را با === / >= بپرسید؛ وصل کردن جوابها کار && / || است.
let age = 20;
let score = 75;
let allowed = age >= 18 && score >= 60;
console.log(allowed);
let member = false;
let guestOk = true;
let enter = member || guestOk;
console.log(enter);
allowed میشود true (هر دو چک قبولاند). enter هم true است چون مسیر مهمان باز است، حتی اگر member برابر false باشد. عبارت منطقی خودش boolean را ساخته — شما فقط اسم گذاشتهاید.
یک دروازه روی صفحه
یک boolean ترکیبی حساب کنید، بعد برچسب کوتاهی روی صفحه بنویسید.
<!DOCTYPE html>
<html>
<head>
<title>Logical — page gate</title>
</head>
<body>
<p id="out">…</p>
<script>
let age = 20;
let score = 75;
let allowed = age >= 18 && score >= 60;
let box = document.getElementById("out");
box.textContent = "allowed=" + allowed;
</script>
</body>
</html>
age برابر 20 و score برابر 75 است؛ پس هر دو طرف && قبولاند و صفحه allowed=true را نشان میدهد. score را 50 کنید، رفرش کنید؛ باید allowed=false ببینید. جلسههای بعد با if شاخه میزنند؛ این دمو فقط بله/خیر ترکیبی را چاپ میکند.
خودتان امتحان کنید
true && falseوtrue || falseرا لاگ کنید.!falseو!trueرا لاگ کنید.let age = 16بگذارید وage >= 18 && age < 65را لاگ کنید.let age = 30بگذارید و همان چک بازه را لاگ کنید.- کنار هم
false || trueوfalse && trueرا ببینید و فرقشان را حس کنید. - در دموی HTML فقط
scoreرا عوض کنید، رفرش کنید، متن تازهٔallowed=را بخوانید.
اشتباههای رایج
- نوشتن یک
&یا|بهجای&&و|| - بهکاربردن
&&وقتی منظورتان===بوده (وصل کردن در برابر «یکی است؟») - انتظار اینکه
&&خودش دو عدد را مقایسه کند — اول هر طرف را با مقایسه بسازید - فراموش کردن که
!کل boolean جلویش را برعکس میکند - ریختن مقدار مبهم قبل از اینکه truthy/falsy را آرام بخوانید — با نتیجهٔ شفاف مقایسه شروع کنید
خلاصه
- عملگر منطقی جواب بله/خیر را ترکیب یا برعکس میکند
&&هر دو طرف را میخواهد؛||حداقل یکی را؛!برعکس میکند- برای چک روزمره نتیجهٔ مقایسهها را وصل کنید (
age >= 18 && score >= 60) - اگر اسم میخواهید boolean را ذخیره کنید؛ اگر برچسب میخواهید روی صفحه بنویسید
- نماد مقایسه و نماد منطقی شغل جدا دارند
- بعدی: شرط if-else — با همین booleanها انتخاب میکنید کدام کد اجرا شود
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود