JS 函数的奇怪行为 "every()"
Weird behavior of JS function "every()"
拜托,谁能解释一下函数 every.
的行为
我有一个数组,我想对它应用函数 every。函数 every 使用谓词。
我的简单谓词:
function test() {
return function(arg) {
console.log(arg);
return true;
}
}
我用我的谓词在数组上调用函数 every:
const predicate = test();
[1, 2, 3].every(predicate);
结果:
Output:
1
2
3
但是当我将谓词更改为:
function test() {
return function(...args) {
console.log(...args);
return true;
}
}
结果对我来说很奇怪:
Output:
1 0 [ 1, 2, 3 ]
2 1 [ 1, 2, 3 ]
3 2 [ 1, 2, 3 ]
为什么会这样?我期待这样的事情:
[1]
[2]
[3]
function test() {
return function(arg) {
console.log(arg);
return true;
}
}
function test2() {
return function(...args) {
console.log(...args);
return true;
}
}
const predicate = test();
const predicate2 = test2();
[1, 2, 3].every(predicate);
[1, 2, 3].every(predicate2);
every() 与 map() 和 forEach() 一样,调用带有两个参数的函数:value 和 index。
...arg
就像传递 .every
方法接受的所有参数。
即数组 element
、index of the element
和 whole array
.
因此,将值打印为数组。您可以简单地 return 方括号中的值。
演示 :
[1, 2, 3].every(function(arg) {
console.log([arg]);
return true;
});
拜托,谁能解释一下函数 every.
的行为我有一个数组,我想对它应用函数 every。函数 every 使用谓词。
我的简单谓词:
function test() {
return function(arg) {
console.log(arg);
return true;
}
}
我用我的谓词在数组上调用函数 every:
const predicate = test();
[1, 2, 3].every(predicate);
结果:
Output:
1
2
3
但是当我将谓词更改为:
function test() {
return function(...args) {
console.log(...args);
return true;
}
}
结果对我来说很奇怪:
Output:
1 0 [ 1, 2, 3 ]
2 1 [ 1, 2, 3 ]
3 2 [ 1, 2, 3 ]
为什么会这样?我期待这样的事情:
[1]
[2]
[3]
function test() {
return function(arg) {
console.log(arg);
return true;
}
}
function test2() {
return function(...args) {
console.log(...args);
return true;
}
}
const predicate = test();
const predicate2 = test2();
[1, 2, 3].every(predicate);
[1, 2, 3].every(predicate2);
every() 与 map() 和 forEach() 一样,调用带有两个参数的函数:value 和 index。
...arg
就像传递 .every
方法接受的所有参数。
即数组 element
、index of the element
和 whole array
.
因此,将值打印为数组。您可以简单地 return 方括号中的值。
演示 :
[1, 2, 3].every(function(arg) {
console.log([arg]);
return true;
});