/ / जावास्क्रिप्ट 4 फ़ंक्शंस पाइपलाइन में फ़ंक्शंस का कार्य - जावास्क्रिप्ट, रूबी-ऑन-रेल, एसेट-पाइपलाइन

रेलवे 4 संपत्ति पाइपलाइन पेड़ में जावास्क्रिप्ट फ़ंक्शन - जावास्क्रिप्ट, रूबी-ऑन-रेल, एसेट-पाइपलाइन

मैं एक जावास्क्रिप्ट फ़ंक्शन का उपयोग करने की कोशिश कर रहा हूंजब मैं उस जावास्क्रिप्ट कार्य को रेल एसेट पाइप लाइन मेनिफेस्ट के भीतर डाल देता हूं, तो क्रोम कंसोल। यहां मैं एक सरल रेल 4.2.4 ऐप बनाने और सेटअप करने के लिए कदम उठा रहा हूं

$ rails new JavascriptExample
$ cd JavascriptExample
$ rails g scaffold Bear name:string
$ rake db:migrate

मैं तो संपादित करता हूं app/assets/javascripts/bears.coffee और एक कंसोल लॉग और एक फंक्शन जोड़ें।

console.log("asset pipeline sucks")
square = (x) -> x * x

फिर मैंने सर्वर को आग लगा दी

$ rails s

मैं यात्रा localhost:3000/bears और क्रोम कंसोल में मैं देखता हूं कि मेरी पहली पंक्ति ने काम किया है। हालांकि जब मैं कमांड का प्रयास करता हूं square(5); कंसोल में मुझे एक त्रुटि प्राप्त होती है Uncaught ReferenceError: square is not defined(…)

जब यह फ़ंक्शन स्पष्ट रूप से लोड किया जाता है तो मैं इसे इस तरह क्यों नहीं कर सकता application.js?

उत्तर:

उत्तर № 1 के लिए 1

यह वही है जो आपके कॉफ़ीस्क्रिप्ट को जावास्क्रिप्ट के लिए संकलित किया गया था

(function() {
var square;

console.log("asset pipeline sucks");

square = function(x) {
return x * x;
};
}).call(this);

से इस: the var keyword is reserved in CoffeeScript, and will trigger a syntax error if used. Local variables are created implicitly by default, इसलिए यह आपकी अपेक्षा के अनुसार वैश्विक दायरे में उपलब्ध नहीं है

इसे काम करने के लिए, हम इसके बजाय कुछ ऐसा कर सकते हैं:

console.log("asset pipeline sucks")
@square = (x) -> x * x

ध्यान दें कि हमारे पास है @ और अब संकलित जावास्क्रिप्ट होगी:

(function() {
console.log("asset pipeline sucks");

this.square = function(x) {
return x * x;
};

}).call(this);