Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将布尔值作为参数传递是如何工作的?_Javascript - Fatal编程技术网

Javascript 将布尔值作为参数传递是如何工作的?

Javascript 将布尔值作为参数传递是如何工作的?,javascript,Javascript,好的,问题是,给定一个数组,删除所有“false”元素 这是我对上述问题的解决方案(有效): 我读过关于布尔和过滤器的MDN文章,但仍然不明白它是如何工作的?这里到底发生了什么?布尔函数是回调函数吗?如果是这样的话,在后端如何工作?我只是坐在这里搔头 来自: 回拨 函数是一个谓词,用于测试数组的每个元素。返回true以保留元素,否则返回false 从 作为第一个参数传递的值将转换为布尔值 所以是的。这是回调。它是一个函数(内置于JS语言中),返回true或false,这是filter函数期望传递

好的,问题是,给定一个数组,删除所有“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); });