2013-04-08 35 views
7

Đi mặc dù các tài liệu asm.js Tôi đã quan sát này lạ (với tôi ít nhất, hoàn toàn mới để JS) đoạn mã trên tất cả các mẫu mã:Ảnh hưởng của x = + x trong JavaScript

function test(x) { 
    x = +x; // THIS 
    ... 
    return +(x*y); 
} 

là gì mục đích của + trên dòng đầu tiên?

+0

có thể thay đổi thành số ...! –

+3

'typeof '3'' =>" string " ' typeof +' 3'' => "number" – dfsq

+2

'+' trong 'return + (x * y);' là thừa, thực ra là – Ian

Trả lời

2

Có lẽ tôi đọc sai này nhưng từ thông số kỹ thuật http://asmjs.org/spec/latest/#parameter-type-annotations

là đúc nó như là một đôi?

+0

Vâng, tôi đã bỏ lỡ điều đó. Thú vị để xem cách 'int' và' double' casting được thực hiện khác nhau. – adrianp

+5

Không, nó không đúc nó cụ thể như là một "đôi". Để làm điều đó, bạn sử dụng 'parseFloat' và' parseInt' (cho "số nguyên"). Sử dụng '+' chuyển đổi nó thành một 'Số'. Vì vậy, nếu nó là "int" -looking, nó chuyển đổi nó thành một "int". Nếu nó "nổi", nó chuyển đổi nó thành "gấp đôi". – Ian

+0

Cảm ơn bạn đã làm rõ. – thealfreds

5

Giá trị của nó được sử dụng đơn giản cho casting giá trị với một loại khác để đánh số. Ngoài ra, nó sẽ trả lại NaN nếu giá trị sau đó + biểu tượng không thể chuyển đổi thành number.

FIDDLE

Từ cuốn sách Javascript và JQuery - Các Thiếu Maunal

var numOfShoes = '2'; 
var numOfSocks = 4; 
var totalItems = +numOfShoes + numOfSocks; 

Thêm một dấu + trước một biến (đảm bảo không có khoảng trống giữa hai) cho sự Trình thông dịch JavaScript để cố chuyển đổi chuỗi thành giá trị số — nếu chuỗi chỉ chứa các số như “2”, bạn sẽ kết thúc bằng chuỗi được chuyển đổi thành một số. Trong ví dụ này, bạn kết thúc với 6 (2 + 4). Một kỹ thuật khác là sử dụng Số() lệnh như thế này:

var numOfShoes = '2'; 
var numOfSocks = 4; 
var totalItems = Number(numOfShoes) + numOfSocks; 

Số() chuyển đổi một chuỗi để một số nếu có thể. (Nếu chuỗi chỉ là chữ cái và không số, bạn sẽ có được giá trị NaN để cho biết rằng bạn không thể tắt chữ thành một số.)

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