عملگرها -=+_ در جاوا اسکریپت چه معنایی دارد
من کنجکاو بودم که عامل = +_ در جاوا اسکریپت چه معنایی دارد. به نظر میرسد که عملیات انتساب انجام میدهد.
مثال :
hexbin.radius = function(_) {
if (!arguments.length)
return r;
r = +_;
dx = r * 2 * Math.sin(Math.PI / 3);
dy = r * 1.5;
return hexbin;
};
پاسخ شماره ۱
r = +_;
+تلاش میکند هر چیزی که_است را به عدد تبدیل کند._فقط یک نام متغیر است (نه یک عملگر)، میتواندa،fooو غیره باشد.
مثال:
+"1"
تبدیل «1» به عدد خالص 1.
var _ = "1";
var r = +_;
r اکنون 1 است، نه "1".
علاوه بر این، طبق صفحه MDN مربوط به عملگرهای حسابی:
عملگر جمع یگانه (unary plus) قبل از عملوند خود قرار میگیرد و به عملوندش ارزیابی میشود اما تلاش میکند آن را به عدد تبدیل کند، اگر قبلاً عدد نباشد. [...] این میتواند نمایشهای رشتهای اعداد صحیح و اعشاری را تبدیل کند، و همچنین مقادیر غیررشتهای
true،falseوnull. اعداد صحیح در هر دو قالب دسیمال و هگزادسیمال (با پیشوند"0x") پشتیبانی میشوند. اعداد منفی پشتیبانی میشوند (هرچند برای هگز نه). اگر نتواند یک مقدار خاص را تحلیل کند، بهNaNارزیابی خواهد شد.
همچنین ذکر شده است که
علامت جمع تکعضوی سریعترین و ترجیحیترین روش برای تبدیل چیزی به عدد است
پاسخ شماره ۲
این یک عملگر انتساب نیست.
_فقط یک پارامتر است که به تابع ارسال میشود.hexbin.radius = function(_) { // ^ It is passed here // ... };در خط بعدی
r=+_;+در جلوی آن متغیر (_) را به یک مقدار عددی یا صحیح تبدیل میکند و آن را به متغیرrاختصاص میدهد
آن را با عملگر += اشتباه نگیرید
پاسخ شماره ۳
=+ در واقع دو عملگر هستند. = برای تخصیص و + و _ نام متغیر هستند.
مثل :
i = + 5;
or
j = + i;
or
i = + _;
کدهای زیر من به شما نشان میدهد که چگونه از =+ برای تبدیل یک رشته به عدد صحیح استفاده کنید.
مثال:
y = +'5'
x = y +5
alert(x);
خروجیها ۱۰
استفاده: بنابراین در اینجا y برابر با int 5 است به خاطر =+
در غیر این صورت:
y = '5'
x = y +5
alert(x);
خروجیها ۵۵
در حالی که _ یک متغیر است.
_ = + '5'
x = _ + 5
alert(x)
خروجیها ۱۰
علاوه بر این، جالب خواهد بود بدانید که میتوانید همان کار را با ~ نیز انجام دهید (اگر رشته int باشد (عدد اعشاری به int گرد میشود))
y = ~~'5' // notice used two time ~
x = y + 5
alert(x);
همچنین ۱۰ را خروجی میدهد
~ عملگر NOT بیتی است: بیتهای عملوند خود را وارونه میکند. من دوبار این کار را انجام دادم ولی تغییری در مقدار ایجاد نشد.
پاسخ شماره ۴
این =+ نیست. در جاوااسکریپت، + به معنای تبدیل آن به عدد است.
+'32' مقدار 32 را برمیگرداند.
+'a' مقدار NaN را برمیگرداند.
بنابراین شما میتوانید از isNaN() استفاده کنید تا بررسی کنید که آیا میتوان آن را به عدد تبدیل کرد یا خیر.
پاسخ شماره ۵
این یکی حیلهگر است.
چیز مهمی که باید فهمید این است که کاراکتر زیرخط در اینجا در واقع یک نام متغیر است، نه یک عملگر.
علامت مثبت جلوی آن، مقدار عددی مثبت زیرخط را میگیرد — یعنی بهطور مؤثر متغیر زیرخط را به عدد صحیح تبدیل میکند. میتوانستید همان اثر را با parseInt() نیز به دست آورید، اما احتمالاً استفاده از علامت مثبت در اینجا به دلیل مختصر بودن آن است.
و این فقط علامت مساوی را به عنوان یک انتساب متغیر استاندارد باقی میگذارد.
احتمالاً این به صورت عمدی نوشته نشده تا سردرگمکننده باشد، زیرا یک برنامهنویس با تجربه جاوااسکریپت معمولاً زیرخط را به عنوان یک متغیر تشخیص میدهد. اما اگر نمیدانید، قطعاً بسیار گیجکننده است. من قطعاً اینطور نمینوشتم؛ من در بهترین زمانها هم طرفدار نامهای متغیر کوتاه و بیمعنی نیستم -- اگر میخواهید در کد JS از نامهای متغیر کوتاه برای صرفهجویی در فضا استفاده کنید، از یک مینیمایزر استفاده کنید؛ به جای آن از همان ابتدا با متغیرهای کوتاه ننویسید.
پاسخ شماره ۶
= +_ متغیر _ را به عدد تبدیل خواهد کرد.
پس
var _ = "1",
r = +_;
console.log(typeof r)
عدد را خروجی میدهد.
