can anyone explain me why `filter(String)` also return number?

```js
var arr = [1, "a", '7'],
    numArr = arr.filter(Number), // return 1, 7 (It's Ok)
    strArr = arr.filter(String); // Why return 1, a, 7

alert("numArr = " + numArr + "\n" + "strArr = " + strArr);
alert("typeof arr[0] = " + typeof arr[0]);
```

In the example above, `typeof arr[0]` is `number`; but why it's not filtered in`strArr`?

Thanks.