इसे कॉफ़ीस्क्रिप्ट में कैसे लिखें?
f = (function(){
// something
})();
किसी भी सुझाव के लिए धन्यवाद :)
इसे कॉफ़ीस्क्रिप्ट में कैसे लिखें?
f = (function(){
// something
})();
किसी भी सुझाव के लिए धन्यवाद :)
जवाबों:
जब आप केवल कोष्ठकों का उपयोग कर सकते हैं (उदाहरण के लिए (-> foo)()
, आप do
कीवर्ड का उपयोग करके उनसे बच सकते हैं :
do f = -> console.log 'this runs right away'
सबसे आम उपयोग do
लूप में चर को कैप्चर करना है। उदाहरण के लिए,
for x in [1..3]
do (x) ->
setTimeout (-> console.log x), 1
बिना do
, आप सिर्फ x
3 बार लूप के बाद के मूल्य को प्रिंट करेंगे ।
-> console.log 'this runs right away'
को सौंपता है f
, फिर उसे चलाता है; आपका फ़ंक्शन चलता है और फिर f
मूल प्रश्न के अनुसार, इसके परिणाम को असाइन करता है । (हालांकि मामले में console.log
, वापसी मूल्य हमेशा undefined
वैसे भी होता है।)
{f: do -> // something}
do
आपको फ़ंक्शन के लिए तर्क भी पास करने देता है। पास करने के लिए 1
और 2
मापदंडों के रूप में x
और y
लिखें do (x = 1, y = 2) ->
। (इस फीचर के लिए दस्तावेज खो गया है , लेकिन जिस मुद्दे पर फीचर पेश किया गया था, उसके कुछ उदाहरण हैं।)
यदि आप "उपनाम" चाहते हैं, तो कॉफीस्क्रिप्ट में स्वयं-आहरण समारोह के लिए तर्क पारित हो गए हैं, और हम कहते हैं कि आप इसे प्राप्त करने की कोशिश कर रहे हैं:
(function ( global, doc ) {
// your code in local scope goes here
})( window, document );
तब do (window, document) ->
आप ऐसा नहीं होने देंगे। जाने का रास्ता तो परेंस के साथ है:
(( global, doc ) ->
# your code here
)( window, document )
do (global=window, doc=document) ->
आप do
प्रारंभिक मान के साथ कीवर्ड को पुनरावर्ती "स्व-पहल कार्यों" के लिए डिफ़ॉल्ट फ़ंक्शन मापदंडों के साथ जोड़ सकते हैं । उदाहरण:
do recursivelyPrint = (a=0) ->
console.log a
setTimeout (-> recursivelyPrint a + 1), 1000
उपयोग करने का प्रयास करें
do ($ = jQuery) ->
do ->
#your stuff here
यह एक स्व-निष्पादित समापन का निर्माण करेगा, जो स्कूपिंग के लिए उपयोगी है।
माफी, मैंने इसे हल किया:
f = (
() -> "something"
)()
do
कीवर्ड कुछ सीमाएँ हैं कि यह आवश्यक कभी कभी जे एस शैली दृष्टिकोण का उपयोग करने के लिए कर दिया है (देखें मुद्दा 960 ); do
वास्तव में केवल लूप के साथ क्लोजर उपयोग के मामले के कारण जोड़ा गया था।
यह होना चाहिए
f = () ->
# do something
f = do -> console.log x