عملگر سه تایی در جاوا اسکریپت — به زبان ساده
در زبان برنامهنویسی جاوا اسکریپت علامت سؤال جایگزینی برای گزاره if است و بهتر است در مواردی استفاده شود که یکی از دو مقدار بر اساس یک گزاره شرطی به یک متغیر انتساب مییابند. در واقع هدف از علامت سؤال (?) در کد جاوا اسکریپت بازگشت دادن یکی از دو مقدار بسته به شرایط است. درک ساختار علامت سؤال و همچنین علامت سوال-دونقطه (:?) آسان است، اما استفاده بیش از حد از آن ممکن است خوانایی کد را دشوار سازد. نام دیگر علامت سؤال یا عملگر شرطی در جاوا اسکریپت، عملگر سهتایی است، چون سه عملوند دارد. با این که ساختار این عملگر سراست است، اما توضیح کارکرد آن ممکن است دشوار باشد. در این مقاله قصد داریم با عملگر سه تایی در جاوا اسکریپت آشنا شویم.
عملگر علامت سؤال، سه عملوند میگیرد که به ترتیب به صورت یک شرط، یک مقدار در صورت درست بودن شرط و مقدار دیگر در صورت نادرست بودن شرط هستند. این ساختار در زبان جاوا اسکریپت برای کوتاهتر کردن گزاره if else در یک خط کد مورد استفاده قرار میگیرد. عملگر سهتایی تنها عملگر جاوا اسکریپت است که سه عملوند میگیرد. این عملگر به طور مکرر به عنوان اختصاری برای گزاره if استفاده میشود.
در ادامه مثالی از ساختار عملگر سهتایی مشاهده میکنید:
1(1+1==2)? "Pass": "Fail"
علامت سؤال و علامت دونقطه در مجموع ساختار عملگر سهتایی را تشکیل میدهند.
مزیتهای عملگر سهتایی در جاوا اسکریپت
عملگر سهتایی در جاوا اسکریپت برای انتساب سریع یک مقدار متفاوت به متغیر بر اساس شرط خاص مفید است و این موقعیتی است که به فراوانی پیش میآید.
به کدهای زیر توجه کنید.
1let [profit, costs] = [120000, 100000] // It was a good month
2// Employee bonus structure: $1000 if >10% profit, $100 if not
3let employeeBonus = (profit/costs > 1.10) ? 1000 : 100
4console.log("$"+employeeBonus) // $1000
مهمترین مزیت آن این است که تنها یک خط کد اشغال میکند و از این رو علاوه بر صرفهجویی در زمان، ما را از زحمت نوشتن بلوکهای if، else و {} معاف میدارد.
از نظر فنی پرانتزها اختیاری هستند، اما استفاده از آنها موجب بهبود خوانایی کد میشود:
1employeeBonus = profit/costs > 1.10? 1000: 100
برخی برنامهنویسها تصور میکنند که خواندن عملگر سهتایی دشوار است، اما واقعیت این است که این ساختار امکان نوشتن کدهای تکخطی را فراهم میکند:
1(employeeBonus>500)? console.log("?"): console.log("?") // ?
اگر کد فوق را با ساختار جایگزین مقایسه کنیم، بهتر متوجه تفاوت حجم کد میشویم:
1if (employeeBonus>500)
2 { console.log("?") }
3else
4 { console.log("?") } // ?
عموماً بهترین رویه، معکوس سازی برای حالتهای انتساب متغیر است تا استفاده از علامت سوال-دونقطه معنیدار شود:
1let monthProfitOrLoss = (profit > costs) ? "Profit" : "Loss"
2console.log(`${monthProfitOrLoss} last month`) // Profit last month
در حالتهای دیگر که در صورت درست بودن نتیجه مقایسه عملی انجام خواهد شد، بهتر است از ساختار if استفاده کنیم تا کد تمیزتر بماند.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای جاوا اسکریپت
- آموزش JavaScript ES6 (جاوا اسکریپت)
- مجموعه آموزشهای برنامهنویسی
- جاوا اسکریپت چیست؟ — به زبان ساده
- ساختمان های داده در جاوا اسکریپت — به زبان ساده
==
بسیار مختصر و مفید . ممنونم