यह वास्तव में जटिल नहीं है यदि आप इसके माध्यम से काम करते हैं। चलो अंदर से बाहर काम करते हैं। कॉलिंग:
three()
बिना पैरामीटर का मतलब है कि आप एक अपरिभाषित मूल्य को फंक के रूप में पारित कर रहे हैं। तो यह कहने के रूप में ही है:
makeNum(3, undefined)
जब MakeNum देखता है कि फन अपरिभाषित है, तो वह संख्या में लौटता है, जो कि 3 है।
इसलिए हमने इसे नीचे कर दिया है:
eight(minus(3))
अब देखते हैं कैसे
minus(3)
मूल्यांकन करता है। माइनस देखता है कि आपके द्वारा प्रदान किया गया पैरामीटर 3 है, इसलिए यह एक ऐसा फ़ंक्शन देता है जो "बाएं" पैरामीटर को स्वीकार कर सकता है और 3 को घटा सकता है जो हमने पहले से ही प्रदान किया है। यह निष्पादित नहीं करता है। यह बस वहां बैठता है, "बाएं" पैरामीटर के साथ बुलाया जाने की प्रतीक्षा करता है ताकि यह इसमें से 3 को घटा सके।
इसलिए हमने इसे नीचे कर दिया है:
eight(function(left){
return left - 3;
})
अब देखते हैं कि यह कैसे मूल्यांकन करता है। आठ को फंक पैरामीटर इस फ़ंक्शन के साथ कहा जाता है:
function(left){
return left - 3;
}
यह तब 8 और इस समारोह में आता है जब यह कहता है:
makeNum(8, func)
मेकम तब देखता है कि फंक प्रदान किया गया है (और इसलिए अपरिभाषित नहीं है) और फंक (संख्या) को आठ फ़ंक्शन पर वापस लौटाता है, जो गुजरने के समान है:
8 - 3
आठ समारोह में वापस। आठ फ़ंक्शन उस मान को प्राप्त करता है और फिर उसे वापस करता है। इसलिए हमने इसे नीचे कर दिया है:
5
जो कंसोल में लॉग इन हो जाता है।