[英]Weird behavior of JS function "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);
...arg
就像.every
方法接受的所有參數的傳遞。
即一個數組element
、元素的index of the element
和whole array
。
因此,將值打印為數組。 您可以簡單地返回方括號中的值。
演示:
[1, 2, 3].every(function(arg) { console.log([arg]); return true; });
every() 與 map() 和 forEach() 一樣,使用兩個參數調用函數:值和索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.