2016-10-13 9 views
0

console.log(addTo(4))を使用していません。あなたの答えをありがとう!起動機能、閉鎖

+6

'ADDTOのよ​​うなものを出力します'は関数を返しますので、' addTo(4) 'をコンソール化すると、意味のあるものを得る前に、呼び出す必要のある関数をログに記録します。 –

+1

そのため、次のようになります。 'console.log(addTo(2)(4));' – Ultimater

答えて

0

コードをアンパックします。我々は

var addTo = function (passed) { 
var add = function(inner){ 
    return passed + inner; 
}; 
return add; 
} 
var x = addTo(2); 
console.log(x(4)); 

で起動した場合、その後のスコープを無視して解凍してみましょう:

function actualAdd(passed, inner){ 
return passed + inner; 
}; 

function addTo(passed) { 
return function(x) { return actualAdd(passed, x); 
} 

var addSomethingTo2 = addTo(2); 

// This is a handle for the actualAdd() function, 
// in which "passed" is always the value 2. 
console.log(addSomethingTo2); 

var thisIsSix = addSomethingTo2(4); 

// By calling addSomethingTo2(4) we run the calculation 
// 2 + 4 and return the result of that: 6 
console.log(thisIsSix); 
0

あなたaddTo関数が別の関数、機能addを返します。

あなたがx = addTo(2)を行うと、xの値は、今あなたがaddToに渡された2値へのアクセスを持っている機能add、です。

  • 起動addTo2に引数として渡さ2によるへのアクセス権を持っているadd
  • addToリターン:

    あなたがx = addTo(2)をした後、あなたがconsole.log(x(4))を行う

    は、それが意味しているconsole.log(addTo(2)(4))を行うことに等しく、クロージャーに
  • addTo(関数add)によって返された関数を呼び出し、引数はです3210
  • 戻るまでの合計にpassedinner

の合計、addToから返された値が別の関数であるので、それはconsole.log(addTo(4))では動作しませんので、console.logは単にFunction