2015-05-25 11 views
5

Tôi đã so sánh hai nhánh và có sự phân kỳ trong mã trong khi + operator, theo ý kiến ​​của tôi nó không tạo ra bất kỳ sự khác biệt nào vì nó đang đẩy.
Có sự khác biệt nào không?Có sự khác biệt nào khi sử dụng toán tử "+" để đẩy không?

Trước

if (numberPattern.test(val)) { 
      var getNumbers = val.match(numberPattern); 
      for (i = 0; i < getNumbers.length; i++) { 
       valores.push(getNumbers[i]) 
      } 
     } 

Sau

if (numberPattern.test(val)) { 
      var getNumbers = val.match(numberPattern); 
      for (i = 0; i < getNumbers.length; i++) { 
       valores.push(+getNumbers[i]) 
      } 
     } 
+0

Nếu không gây ra lỗi, tôi không nghĩ đó là vấn đề – SharpEdge

+0

Câu hỏi đặt ra là việc sử dụng toán tử này là gì? Tôi nghĩ không cần thiết –

+0

bản sao có thể có của [Unary + được sử dụng trong Javascript là gì?] (Http://stackoverflow.com/questions/9081880/what-is-unary-used-for-in-javascript) – Hacketo

Trả lời

7

Nó được chuyển đổi nó vào một Number, nơi mà các trường hợp khác được để lại nó như là chuỗi.

+0

làm thế nào để bạn biết rằng 'getNumber [i]' đang trả về một chuỗi? –

+1

Lưu ý rằng kỹ thuật này khác với 'parseFloat' ở chỗ nó sẽ chuyển đổi các boolean và các chuỗi rỗng (+ các trường hợp cạnh khác). Tôi sẽ không khuyến khích nó vì khả năng đọc. –

+1

@AmitJoki vì quá trình xử lý regex. –

2

+ thực sự sẽ thay đổi getNumbers[i] thành loại number. + (toán tử đơn nhất) thực sự được sử dụng để chuyển đổi nó thành một số number.

Cố gắng chạy mã này:

var s = "1"; //String 
var s1 = +s; //String changed to a number now 
console.log(typeof s1); 

Bạn sẽ thấy những loại s1 sẽ number.

Các vấn đề liên quan