Fix isNumber snippet and add test for NaN value
This commit is contained in:
@ -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
|
||||||
```
|
```
|
||||||
|
|||||||
@ -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();
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user