javascript - จุดประสงค์ของสัญลักษณ์บวกหน้าตัวแปรคืออะไร?
เครื่องหมาย +d ใน
function addMonths(d, n, keepTime) {
if (+d) {
หมายความว่า?
คำตอบ #1
ตัวดำเนินการ + จะคืนค่าการแทนตัวเลขของวัตถุ ดังนั้นในกรณีเฉพาะของคุณ ดูเหมือนว่าจะเป็นการตั้งเงื่อนไข if บนพื้นฐานว่าค่า d เป็นตัวเลขที่ไม่ใช่ศูนย์หรือไม่
อ้างอิงที่นี่ และตามที่ระบุไว้ในความคิดเห็น ที่นี่
คำตอบ #2
ตัวดำเนินการ + เป็นตัวดำเนินการแบบเอกนิพจน์ (unary) ซึ่งจะแปลงค่าดังกล่าวเป็นตัวเลข ด้านล่างเป็นตารางที่แสดงผลลัพธ์ของการใช้ตัวดำเนินการนี้กับค่าที่แตกต่างกัน
+----------------------------+-----------+
| Value | + (Value) |
+----------------------------+-----------+
| 1 | 1 |
| '-1' | -1 |
| '3.14' | 3.14 |
| '3' | 3 |
| '0xAA' | 170 |
| true | 1 |
| false | 0 |
| null | 0 |
| 'Infinity' | Infinity |
| 'infinity' | NaN |
| '10a' | NaN |
| undefined | NaN |
| ['Apple'] | NaN |
| function(val){ return val }| NaN |
+----------------------------+-----------+
ตัวดำเนินการ + จะคืนค่าความหมายสำหรับวัตถุที่ได้มีการใช้งานเมทอด valueOf แล้ว
let something = {
valueOf: function () {
return 25;
}
};
console.log(+something);
คำตอบ #3
มันเป็นตัวดำเนินการ "+" แบบ unary ซึ่งให้ผลลัพธ์เป็นนิพจน์ตัวเลข ผมเชื่อว่ามันจะเหมือนกับ d*1
คำตอบ #4
ดังที่ได้อธิบายในคำตอบอื่น ๆ มันจะแปลงตัวแปรให้เป็นตัวเลข มีประโยชน์โดยเฉพาะเมื่อ d อาจเป็นได้ทั้งตัวเลขหรือสตริงที่ประเมินค่าได้เป็นตัวเลข
ตัวอย่าง (ใช้ฟังก์ชัน addMonths ในคำถาม):
addMonths(34,1,true);
addMonths("34",1,true);
ดังนั้น +d จะถูกประเมินเป็นตัวเลขในทุกกรณี ทำให้ไม่จำเป็นต้องตรวจสอบประเภทและใช้เส้นทางโค้ดต่างกันขึ้นอยู่กับว่า d เป็นตัวเลข ฟังก์ชัน หรือสตริงที่สามารถแปลงเป็นตัวเลขได้
