Javascript 将布尔值作为参数传递是如何工作的?
好的,问题是,给定一个数组,删除所有“false”元素 这是我对上述问题的解决方案(有效): 我读过关于布尔和过滤器的MDN文章,但仍然不明白它是如何工作的?这里到底发生了什么?布尔函数是回调函数吗?如果是这样的话,在后端如何工作?我只是坐在这里搔头 来自: 回拨 函数是一个谓词,用于测试数组的每个元素。返回true以保留元素,否则返回false 从 作为第一个参数传递的值将转换为布尔值 所以是的。这是回调。它是一个函数(内置于JS语言中),返回true或false,这是filter函数期望传递给它的函数执行的操作Javascript 将布尔值作为参数传递是如何工作的?,javascript,Javascript,好的,问题是,给定一个数组,删除所有“false”元素 这是我对上述问题的解决方案(有效): 我读过关于布尔和过滤器的MDN文章,但仍然不明白它是如何工作的?这里到底发生了什么?布尔函数是回调函数吗?如果是这样的话,在后端如何工作?我只是坐在这里搔头 来自: 回拨 函数是一个谓词,用于测试数组的每个元素。返回true以保留元素,否则返回false 从 作为第一个参数传递的值将转换为布尔值 所以是的。这是回调。它是一个函数(内置于JS语言中),返回true或false,这是filter函数期望传递
function bouncer(arr) {
return arr.filter(Boolean);
}
上述代码相当于:
function bouncer(arr) {
return arr.filter(function(arr) {
return Boolean(arr);
});
}
另外,当传递falsey参数时,返回false
。因此,这些对象被过滤掉。该对象是布尔值的对象包装器。调用Boolean
时,实际上是在调用带有参数的函数(请参见代码段)-这正是Array.filter()
回调中所需的参数
调用新的布尔值([value])
根据参数的不同,返回的值将是true
或false
(请参见代码段)
console.log(布尔值)//建造师
log(布尔值(0))//假值
log(Boolean(“foo”)//真实值
同
arr.filter(function (x) { return Boolean(x); });
因为布尔构造函数也是一个函数,所以它返回true或
对于“真实”论点,或对于“虚假”论点,为false
Boolean
是一个创建布尔值的构造函数,因此它是一个函数,对于truthy值返回true,对于false值返回false,因此通过对其进行过滤,可以删除所有false值。它将arr(数组)的每个元素与传递的布尔值进行比较,并返回与传递的值匹配的元素数组。您也可以将筛选器与非布尔值一起使用。[7,“ate”,false,9]。筛选器(i=>{return Boolean(i)})
@NickA如何?我以为布尔值只是检查一个值是真是假?那么,它是如何返回真实的价值观的呢?它实际上并没有说过滤掉非真实值?谢谢!基本上,这就把事情弄清楚了!我只是不明白它是如何返回真实值的。还有一个问题:在这种情况下,它是如何在数组中的元素之间循环的?在正常情况下,我会键入:arr.filter(函数(x){})
其中“x”是数组项的占位符是吗?在这种情况下,当调用Boolean作为回调函数时,我是否需要提到这一点?如下所示:arr.filter(函数(布尔(x){});
@firefiber-“它是如何在数组中的元素之间循环的?”-因为这就是filter
的功能。“将键入”-Boolean是一个接受参数的函数。为什么需要将它包装到另一个函数中?好的,我得到了这个-但是它从哪里获取参数?例如,当使用常规回调调用filter时,它会是这样的:arr.filter(function(x){});
where“x”是正在测试的数组项的占位符吗?是的?但是当使用布尔作为回调时,它如何知道正在测试哪个数组项?如果这个问题没有意义,很抱歉,我只是不知道它在后面是如何工作的。在我的脑海中,它应该这样写:arr.filter(function(Boolean(x){})
其中x是被测试数组的项。否?arr.filter(布尔)
与arr.filter(x=>Boolean(x))
相同。x
来自filter
回调
function bouncer(arr) {
return arr.filter(function(arr) {
return Boolean(arr);
});
}
arr.filter(Boolean);
arr.filter(function (x) { return Boolean(x); });