2017-10-11 14 views
16

Tôi đang cố gắng sử dụng isNaN chức năng toàn cầu trong một chức năng mũi tên trong một module Node.js nhưng tôi nhận được lỗi này:ESLint sử dụng bất ngờ của isNaN

[eslint] Unexpected use of 'isNaN'. (no-restricted-globals)

Đây là mã của tôi:

const isNumber = value => !isNaN(parseFloat(value)); 

module.exports = { 
    isNumber, 
}; 

Bất kỳ ý tưởng nào về việc tôi đang làm gì sai?

PS: Tôi đang sử dụng hướng dẫn kiểu AirBnB.

Trả lời

32

documentation suggests, hãy sử dụng Number.isNaN.

const isNumber = value => !Number.isNaN(parseFloat(value)); 

Trích dẫn tài liệu Airbnb của:

Why? The global isNaN coerces non-numbers to numbers, returning true for anything that coerces to NaN. If this behavior is desired, make it explicit.

// bad 
isNaN('1.2'); // false 
isNaN('1.2.3'); // true 

// good 
Number.isNaN('1.2.3'); // false 
Number.isNaN(Number('1.2.3')); // true 
+0

Oh những gì bỏ lỡ! Tôi đã tìm kiếm trong tài liệu mozilla js và họ sử dụng chức năng toàn cầu. Tôi không biết rằng Number.isNaN() cũng tồn tại. Cảm ơn! :) –

+0

Tôi đã bình chọn câu trả lời, nhưng tôi đang bỏ phiếu cho lý do của Airbnb. – mwilcox

0

FYI, điều này sẽ không làm việc cho IE. Kiểm tra here ở khả năng tương thích với trình duyệt.