この質問は他の場所でも返答されるかもしれませんが、回答の検索方法がわかりませんでした。私はJavaScriptに慣れていないので、これは私が理解するための闘いです。私は、コンソールに次のように渡すと関数を返すChrome Devツール
function multiple(n) {
function f(x) {
return x * n;
}
return f;
}
var triple = multiple(3);
var quadruple = multiple(4);
:
次のコードを考えると
console.log(triple(5));
私は私が期待するものを手に入れる、それは、任意の数と同様に15である、それは意志3倍にする(または2番目の関数を使用する場合は4倍にする)。私は、次のコードを取得コンソールにトリプル入力すると
しかし:3以来...
f(x) {
return x * n;
}
べきではありませんコンソールリターンを...
f(x) {
return x * 3;
}
にコード化されます次のコードのおかげで機能:あなたが持っていた場合、それは同じように
var triple = multiple(3);
あなたの質問に答えて、3は「コード化されていません」というように、パラメータとして渡します。コンソールには、持っている機能のソースが表示されます。今あなたのソースにはx * 3があります。 – pvg
これはいわゆる[クロージャ](https://www.wikiwand.com/en/Closure_(computer_programming))です。 「[レキシカル環境:共通理論]」(http://dmitrysoshnikov.com/ecmascript/es5-chapter-3-1-lexical-environment-common-theory/)も参照してください。 – user2683246