Mục đích của một biểu tượng cộng trước một biến là gì?


262

Điều này thực sự nghe giống như một câu hỏi đơn giản nhưng tôi không có may mắn tìm kiếm. cái gì +dtrong

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

có nghĩa?



3
Cùng một vấn đề nhưng tiêu đề của trang khác không mô tả trường hợp chung như thế này
geotheory

1
trùng lặp có thể có nghĩa là +…trong JavaScript
Bergi

Câu trả lời:


312

Các + nhà điều hành trả về số đại diện của đối tượng. Vì vậy, trong trường hợp cụ thể của bạn, nó sẽ xuất hiện để dự đoán nếu trên có hay không dlà một số khác không.

Tham khảo tại đây . Và, như đã chỉ ra trong các ý kiến, ở đây .




Tôi chỉ tự hỏi cái nào hiệu quả hơn, phân tích một chuỗi thành một số nguyên bằng cách sử dụng hàm parseInt hoặc sử dụng toán tử cộng?
acarlstein

1
Nó khác với .parseInt()như thế nào?
Daniel W.

1
@acarlstein từ liên kết MDN trong câu trả lời: "Mặc dù phủ định unary (-) cũng có thể chuyển đổi các số không, unary plus là cách nhanh nhất và được ưa thích để chuyển đổi một số thành số , vì nó không thực hiện bất kỳ thao tác nào khác trên số . " (chỉ dành cho câu trả lời "chính thức")
AN

22

Nó là một toán tử "+" đơn nhất mang lại một biểu thức số. Nó sẽ giống như d*1, tôi tin.


12

Như đã giải thích trong các câu trả lời khác, nó chuyển đổi biến thành một số. Đặc biệt hữu ích khi d có thể là số hoặc chuỗi chức năng đánh giá một con số

Ví dụ (sử dụng addMonthshàm trong câu hỏi):

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

sau đó +dsẽ đánh giá một con số trong mọi trường hợp. Do đó, tránh việc phải kiểm tra loại và lấy các đường dẫn mã khác nhau tùy thuộc vào việc dmột số, một hàm hoặc một chuỗi có thể được chuyển đổi thành một số.


+dsẽ không đánh giá một số với ví dụ gọi đầu tiên của addMonths
Gus Crawford

đúng, tôi không biết những gì tôi đã làm khi tôi viết này. +function(){...}sẽ NaNkhông đánh giá chức năng
RubenLaguna

4
Bạn có thể chỉnh sửa câu trả lời của bạn để loại bỏ sự điên rồ? Nó khá khó hiểu.
Buh Buh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.