簡體   English   中英

JS 函數“every()”的奇怪行為

[英]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 elementwhole array

因此,將值打印為數組。 您可以簡單地返回方括號中的值。

演示

 [1, 2, 3].every(function(arg) { console.log([arg]); return true; });

every() 與 map() 和 forEach() 一樣,使用兩個參數調用函數:值和索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM