Apa tujuan dari simbol plus sebelum variabel?


262

ini benar-benar terdengar seperti pertanyaan sederhana tetapi saya tidak beruntung mencari. apa yang ada +ddi

function addMonths(d, n, keepTime) { 
    if (+d) {

cara?



3
Masalah yang sama tetapi judul halaman lain tidak menggambarkan kasus umum seperti ini
geotheory

1
kemungkinan duplikat dari Apa +…artinya dalam JavaScript
Bergi

Jawaban:


312

The +Operator mengembalikan representasi numerik dari objek. Jadi, dalam kasus khusus Anda, tampaknya akan memprediksikan if pada apakah dangka tersebut bukan nol.

Referensi di sini . Dan, seperti yang ditunjukkan dalam komentar, di sini .



1
Tautan yang
berfungsi

Saya hanya ingin tahu mana yang lebih efisien, parse string ke integer menggunakan fungsi parseInt atau menggunakan operator plus?
acarlstein

1
Bagaimana bedanya .parseInt()?
Daniel W.

1
@acarlstein dari tautan MDN dalam jawaban: "Meskipun negasi unary (-) juga dapat mengkonversi non-angka, unary plus adalah cara tercepat dan yang disukai untuk mengubah sesuatu menjadi angka , karena ia tidak melakukan operasi lain pada nomor tersebut . " (hanya untuk jawaban "resmi")
AN

22

Ini adalah operator "+" unary yang menghasilkan ekspresi numerik. Itu akan sama dengan d*1, saya percaya.


12

Seperti yang dijelaskan dalam jawaban lain, ini mengubah variabel menjadi angka. Berguna khusus ketika d dapat berupa angka atau string fungsi yang mengevaluasi ke suatu angka.

Contoh (menggunakan addMonthsfungsi dalam pertanyaan):

addMonths(34,1,true);
addMonths("34",1,true);

maka +dakan dievaluasi ke nomor dalam semua kasus. Dengan demikian menghindari kebutuhan untuk memeriksa jenis dan mengambil jalur kode yang berbeda tergantung pada apakah dangka, fungsi atau string yang dapat dikonversi ke angka.


+dtidak akan mengevaluasi ke nomor dengan contoh doa tambahan addMonths
Gus Crawford

benar, saya tidak tahu apa yang saya lakukan ketika saya menulis ini. +function(){...}akan menghasilkan NaNtidak mengevaluasi fungsi
RubenLaguna

4
Bisakah Anda mengedit jawaban Anda untuk menghapus yang gila? Cukup membingungkan.
Buh Buh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.