Fix isNumber snippet and add test for NaN value

This commit is contained in:
Marcin Kopa
2019-03-15 10:45:05 +01:00
parent 4f1d5892e8
commit 0daced5fd5
2 changed files with 7 additions and 3 deletions

View File

@ -2,13 +2,14 @@
Checks if the given argument is a number. Checks if the given argument is a number.
Use `typeof` to check if a value is classified as a number primitive. Use `typeof` to check if a value is classified as a number primitive. Because `typeof NaN` is equal to `number`, the `val === val` is for protection. NaN compares unequal (via ==, !=, ===, and !==) to any other value, including to another NaN value.
```js ```js
const isNumber = val => typeof val === 'number'; const isNumber = val => typeof val === 'number' && val === val;
``` ```
```js ```js
isNumber('1'); // false
isNumber(1); // true isNumber(1); // true
isNumber('1'); // false
isNumber(NaN); // false
``` ```

View File

@ -10,3 +10,6 @@ test('passed argument is a number', () => {
test('passed argument is not a number', () => { test('passed argument is not a number', () => {
expect(isNumber('1')).toBeFalsy(); expect(isNumber('1')).toBeFalsy();
}); });
test('passed argument is not a number', () => {
expect(isNumber(NaN)).toBeFalsy();
});