عملگر علامت تعجب دوگانه (!!) در جاوا اسکریپت

عملگر علامت تعجب دوگانه (!!) در جاوا اسکریپت

در جاوا اسکریپت، عملگر تعجب دوگانه an را تبدیل می کند هدف – شی به مقدار بولی. این اتفاق می افتد تا آنها به اشیاء “جعلی” تبدیل شوند نادرست و به اشیاء «واقعی» تبدیل شوند درست است، واقعی.

مثلا:

  • !! 0 –> نادرست
  • !! صفر –> نادرست
  • !! تعریف نشده –> نادرست
  • !! 48 –> درست است، واقعی
  • !! “سلام” –> درست است، واقعی
  • !! [1, 2, 3] –> درست است، واقعی

این یک راهنمای جامع برای عملگر علامت تعجب دوگانه است.

درباره عملگر Double Exclamation: این عملگر نیست

عملگر تعجب دوگانه (!!) در واقع نیست (!) دو بار اپراتور. بنابراین عملاً عملگر تعجب دوگانه وجود ندارد، بلکه عملگر دوگانه بدون وجود دارد.

وقتی عملگر not را دو بار روی یک شی جاوا اسکریپت اعمال می کنید، این اتفاق می افتد:

  • اولی نه شی را به یک مقدار بولی معکوس تبدیل می کند.
  • دومین نه عملگر مقدار بولی معکوس را معکوس می کند. به عبارت دیگر، آن را به مقدار بولی واقعی شی تبدیل می کند.

یک مثال

برای مثال، بیایید عملیات توان دوگانه را به یک عدد اعمال کنیم:

let bool = !!23
console.log(bool)

خروجی:

true

از آنجایی که یک عدد غیر صفر در جاوا اسکریپت درست در نظر گرفته می شود، کد بالا:

  • عدد 23 را به “نه 23” یا تبدیل می کند نادرست.
  • تبدیل می کند نادرست به درست است، واقعی.

اما «درست» یا «نادرست» بودن یک مقدار در جاوا اسکریپت به چه معناست؟

فصل بعدی نگاه عمیق تری به مفاهیم صدق و کذب دارد.

درست و غلط در جاوا اسکریپت

در جاوا اسکریپت، هر شی با یک مقدار بولی مرتبط است. راه دیگری برای بیان آن این است که هر شی جاوا اسکریپت یکی از این دو است درست است، واقعی یا نادرست در زمینه بولی

بنابراین، در جاوا اسکریپت هر شی یا “درست” یا “نادرست” است. به عبارت دیگر، هنگامی که به یک مقدار بولی تبدیل می شود:

  • ارزش های “واقعی” تبدیل می شوند درست است، واقعی.
  • آنها به ارزش های “کاذب” تبدیل می شوند نادرست.

اما چه نوع اشیایی «درست» و کدام اشیاء «کاذب» هستند؟

در جاوا اسکریپت، مقادیر زیر همیشه “false” هستند:

  • نادرست
  • 0
  • -0
  • 0n (BigInt صفر)
  • “”
  • صفر
  • تعریف نشده
  • NaN

هر چیز دیگری “درست” است!

با استفاده از تبدیل مقادیر به مقادیر بولی می توانید حقیقت را آزمایش کنید بولی () شیء برای انجام تبدیل.

به عنوان مثال، در اینجا برخی از مقادیر “true” آورده شده است:

console.log(Boolean([0, 0, 0]))
console.log(Boolean("Hello"))
console.log(Boolean(15))

خروجی:

true
true
true

و در اینجا برخی از “جعلی” وجود دارد:

console.log(Boolean(0))
console.log(Boolean(""))
console.log(Boolean(NaN))

خروجی:

false
false
false

چرا از تعجب دوتایی (!!) در جاوا اسکریپت استفاده کنیم؟

تا اینجا شما آموخته اید که هر مقدار JS با یک مقدار بولی مرتبط است. تو هم اینو یاد گرفتی !! عملگر هر شی را به یک مقدار بولی تبدیل می کند که در یک زمینه بولی باشد.

اکنون ممکن است تعجب کنید که چرا کسی این کار را با یک عبارت double not انجام می دهد. وجود دارد بولی () کلاسی که می توانید از آن نیز استفاده کنید. را بولی () ریخته گری همچنین تبدیل را خواناتر می کند.

چه از Boolean() یا !! بحث در آینده

برخی افراد به استفاده از !! چون کوتاه تر از نوشتن است بولی ().

!!0
Boolean(0)

با این حال، برخی از مردم آن را ترجیح می دهند بولی () زیرا این روش ساده تری برای انجام تایپ کاست.

تصور کنید با مفهوم !! و خواندن یک خط مانند این:

if(!!str) {
    ....
}

منطقی نیست، اینطور نیست؟

اگر اینطور نوشته می شد خیلی تمیزتر می شد:

if(Boolean(str)) {
    ....
}

در این عبارت، بلافاصله می توانید بگویید که نویسنده این قطعه کد می خواهد رشته را تبدیل کند St به یک مقدار بولی.

خلاصه استفاده نکنید !! عملگر برای تبدیل اشیا به بولی. در عوض، استفاده کنید بولی () شیء برای انجام تبدیل.

جمعش کن

امروز یاد گرفتید که عملگر دو علامت تعجب در جاوا اسکریپت چگونه کار می کند.

علامت تعجب دوتایی هر شی را به یک مقدار بولی تبدیل می کند.

به طور خلاصه، عملگر تعجب دوگانه یک عملگر واقعی نیست. در عوض، این یک زنجیره از دو عملگر است. عملگر double-not یک شی را به مقدار بولی که در یک زمینه بولی خواهد بود تبدیل می کند.

  • اولین غیر اپراتور شی را بر اساس “درستی” یا “نادرستی” شی به یک مقدار بولی معکوس تبدیل می کند.
  • دومین غیر اپراتور مقدار بولی معکوس را معکوس می کند.

این امکان پذیر است زیرا هر شی و مقدار در جاوا اسکریپت دارای یک مقدار بولی مرتبط است. به عبارت دیگر، هر شیئی یا «واقعی» است یا «کاذب».

بیشتر اشیاء در جاوا اسکریپت درست هستند. با این حال، ارزش هایی مانند NaN، 0، “”و نادرست “جعلی” هستند.

اما همانطور که مشخص است، استفاده از عملگر double-not یک روش کاملا مبهم برای تبدیل یک شی به یک بولی است. در عوض، شما باید استفاده کنید بولی () شیء کنید تا تبدیل را برای درک آسان تر کنید.

با تشکر برای خواندن!

کد نویسی مبارک!