ค้นหาเว็บไซต์

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 เป็นตัวเลข ฟังก์ชัน หรือสตริงที่สามารถแปลงเป็นตัวเลขได้

บทความที่เกี่ยวข้อง