Javascript filter() 是否默认执行类型强制



我知道Javascript类型强制(== vs ===)。

我正在查看 filter() 函数。似乎默认情况下它执行类型强制。这是对的吗?这是代码:

var x = [1,2,'hi']
console.log(x.filter(String)); // [ 1, 2, 'hi' ]
console.log(x.filter(Number)); // [ 1, 2]

如果我不希望这种情况,我是否必须向过滤器函数添加回调?我很惊讶这在当前形式下有效,因为我认为它总是需要一个回调参数。

您的代码不会检查元素是字符串还是数字。它的作用是这样的:

String(1)返回'1' => 真实 => 通过过滤器。
Number('hi')返回 NaN => falsy => 不通过过滤器。

你想做的事情可以通过一个函数来实现:

function checkString(el) {
    return (typeof el === 'string');
}

StringNumber 全局对象将进行转换(如果可以转换)。 链接。

它说,

"任何要转换为字符串的东西。"

关于Number.链接

如果参数无法转换为数字,则返回 NaN

NaN被取假,

最新更新