Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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_Arrays_Function_Comparison_Operator Keyword - Fatal编程技术网

Javascript 这是怎么回事;如果;没有操作员工作?

Javascript 这是怎么回事;如果;没有操作员工作?,javascript,arrays,function,comparison,operator-keyword,Javascript,Arrays,Function,Comparison,Operator Keyword,我对Javascript比较陌生,我正在阅读第5章的雄辩Javascript。我遇到了一些我不太懂的代码。我知道它是如何工作的(一般的方法和步骤),但我不明白它为什么工作 代码如下: function filter(array, test) { var passed = []; for (var i = 0; i < array.length; i++) { if (test(array[i])) passed.push(array[i]); } ret

我对Javascript比较陌生,我正在阅读第5章的雄辩Javascript。我遇到了一些我不太懂的代码。我知道它是如何工作的(一般的方法和步骤),但我不明白它为什么工作

代码如下:

function filter(array, test) {
  var passed = [];
  for (var i = 0; i < array.length; i++) {
    if (test(array[i]))
      passed.push(array[i]);
  }
  return passed;
}
没有| |&&或其他“比较运算符”。它如何将值与仅使用括号进行比较

如何将测试与没有运算符的数组[i]值进行比较

链接到文件: 转到“筛选数组”练习


谢谢

我不太确定,但我认为这是一个自定义函数。很可能存在一些比较,函数的结果为真/假。如果您给我们完整的代码,我们可以更好地向您解释。

此代码接受一个
test
参数,即所谓的“谓词函数”,即给定元素的函数将返回true或false

例如,它将用于

var big_numbers = filter(numbers, function(x){ return x > 100; });
i、 e.预期参数测试实际上是代码


在Javascript中,传递代码是非常常见和惯用的。在其他不支持“闭包”和“嵌套函数”概念的语言中,这是一种更令人恼火的事情,它迫使所有代码都处于顶层,有一个名称,并且没有上下文(例如C语言)。

将计算
if
语句括号内的任何内容。如果结果为falsy(
false
0
NaN
null
未定义
),则失败,如果结果为真(其他所有内容),则通过。因此,如果if语句包含函数调用
if(test(something)){}
,那么if语句只会说
,如果函数调用的结果是truthy,那么pass


另外,
&&
|
不是比较运算符,它们是布尔运算符。它们只是将两个语句的结果连接起来,比如
true | | false
,其计算结果为
true

“test”这里是一个函数,而不是一个值。在Javascript中,每个函数都是一个对象,可以作为参数传递。在这种情况下,test是一个函数,它接受一个参数并根据参数值返回true或false


因此,在for循环中,对每个数组元素调用test函数,如果结果为true,它将存储在另一个数组中。最终,传递的元素将返回给函数调用方。

test函数调用产生一个值:truth-y或false-y。它与
var x=somevalue()没有区别;如果(x){..}
。括号是
if
构造的一部分,但不“比较”任何内容。在类似问题或类似文章的比较中,可以找到所有相关信息,并返回布尔结果。if语句不需要比较,只需要一个布尔变量就足够了。@AycanYaş305;它根本不需要是“布尔”(或变量)。@user2864740是否将
0
1
值转换为布尔值?
var big_numbers = filter(numbers, function(x){ return x > 100; });