2017-08-10 28 views
0

.filter()とForループを使用してタスクを完了できましたが、2番目の例でその形式を使用できない理由がわかりません。最初の例は正常に動作します。Forループ内のJavascriptフィルタ関数

function destroyer(arr) { 

for(i=1; i < arguments.length; i++){ 
    number = arguments[i]; 
    arr = arr.filter(function(num){ 
    return num !== number; 
    }); 
    } 
    return arr; 
} 

destroyer([1, 2, 3, 1, 2, 3], 2, 3); 

return num!==arguments[i]return num !== number;を交換しようとしましたが、arguments[i]は数値を返すように表示されません。

+0

'arguments'目的は、*その*機能するものであり、周囲の関数で' arguments'オブジェクトとは異なるであろう。 – Pointy

+0

フィードバックいただきありがとうございます。 –

答えて

3

argumentsは、その時点で異なる関数引数を参照するためです。

関数を入力するたびに、argumentsは、現在実行中の関数の引数のを参照します。 argumentsがトップレベル関数の引数だけを参照することはあまり意味がありません。

例:フィルタコールバック内部

function a() { 
 
    console.log(arguments[0]); 
 
    var b = function() { 
 
    console.log(arguments[0]); 
 
    }; 
 
    b('This is b'); 
 
} 
 

 
a('This is a');

+0

.Filterの2番目の機能が関与していたという観点から、私はそれを見ていませんでした。今や意味をなさないありがとう。 –

+0

@ブラッドカニンガム確かに!私は最初の笑で「議論」と同様の問題を抱えていることを覚えています。 –

関連する問題