何を求めていることは、あなたのために何かをする機能である:
function giveMeAFunctionThatBeeps(){
return function() {
alert('Beep!');
}
}
var beeper = giveMeAFunctionThatBeeps();
beeper(); // beeps!
実際giveMeAFunctionThatbeepsは、あなたが欲しいものを行う関数を与えるだけの工場です。彼らが提供している
は例では、ブザーと同じことをやっているが、あなたはまた、値を渡している:、
function giveMeAFunctionThatBeepsANumber(x){
return function() {
alert('Beep ' + x);
}
}
これはブザーを返します(それは覚えている工場です)が、ブザーはxの値を警告します。
ただし、この値は、あなたが最初にビープ音を作成するときに設定されている:
var beeper = giveMeAFunctionThatBeeps(5);
beeper(); // beeps 5!
ブザーが今値5をビープ音立ち往生されており、我々はそれについて何もすることはできません。
あなたが任意の数のビープ音を発するブザー作成する場合、次の例は次のとおりです。今、私たちは私たちがに番号を差し込むことができる機能を提供するために工場を求めていると
function giveMeAFunctionThatBeepsANumber(){
return function (x) {
alert('Beep ' + x);
}
}
var beeper = giveMeAFunctionThatBeeps();
beeper(6); // beeps 6!
beeper(7); // beeps 7!
を。
はその後最後に、元の例では、上記の両方を組み合わせている:我々はブザーを作成するとき、我々は、上記のように覚えておいてください2に渡してい
function giveMeAFunctionThatBeepsANumber(x){
return function (y) {
alert('Beep ' + (x + y));
}
}
var beeper = giveMeAFunctionThatBeeps(2);
、私たちはその後、これを変更することはできません!それは常にビープ音2 ...
...しかし、それは、パラメータをとる関数を返す(値2で事前に設定)の工場ですので、我々はそれを実行したとき、我々はそれをカスタマイズすることができます。
beeper(6); // beeps 8! because x was set when we created it, and y is what we pass in.
私は、私の脳はまだイムはちょうどしようと、それを取得しようとしている見ます私の頭の中のadd10(3)があなたの設定Xがなぜそうではないと言っているかのように、yが渡されたり参照されていないときに設定されている方法を見てください。 ( – mustafa
いいえ、 'makeAdder(10)'の 'x'は' 10'に設定されています。 'add10(2)'の 'y'は' 2'に設定されています。 –
しかし、 makeAdder(10、2)は同じことをしているのですか?それとも本質的にmakeAdder(10)ですか?(2)? あまりにもありがとうございました:) – mustafa