JavaScript एक डायनामिक भाषा है। यह ऑब्जेक्ट-ओरिएंटेड, इम्परेटिव और डिक्लेरेटिव (जैसे फंक्शनल प्रोग्रामिंग) शैलियों का समर्थन करती है।
JavaScript में नामों को वैल्यू असाइन करने के कुछ मुख्य तरीके हैं, जैसे वेरिएबल या कॉन्स्टेंट का इस्तेमाल। Exercism पर वेरिएबल हमेशा camelCase में लिखे जाते हैं और कॉन्स्टेंट SCREAMING_SNAKE_CASE में। इसके लिए कोई आधिकारिक गाइड नहीं है, और अलग-अलग कंपनियों और संगठनों के अपने-अपने स्टाइल गाइड होते हैं। वेरिएबल आप जैसे चाहें वैसे लिख सकते हैं। अभ्यास जिस तरह तैयार किए गए हैं, उसी तरह वेरिएबल लिखने का फायदा यह है कि वेब इंटरफेस और ज़्यादातर IDE में वे अलग तरह से हाइलाइट होते हैं।
JavaScript में वेरिएबल const, let या var कीवर्ड से बनाए जा सकते हैं।
let या var इस्तेमाल करने पर एक वेरिएबल अपने जीवनकाल में अलग-अलग वैल्यू रख सकता है।
उदाहरण के लिए, myFirstVariable को असाइनमेंट ऑपरेटर = की मदद से कई बार बनाया और फिर से बनाया जा सकता है:
let myFirstVariable = 1;
myFirstVariable = 'Some string';
myFirstVariable = new SomeComplexClass();
let और var के उलट, const से बनाए गए वेरिएबल को सिर्फ एक बार ही असाइन किया जा सकता है।
JavaScript में कॉन्स्टेंट बनाने के लिए इसी का इस्तेमाल किया जाता है।
const MY_FIRST_CONSTANT = 10;
// Can not be re-assigned.
MY_FIRST_CONSTANT = 20;
// => TypeError: Assignment to constant variable.
💡 आगे के एक कॉन्सेप्ट अभ्यास में कॉन्स्टेंट असाइनमेंट, कॉन्स्टेंट बाइंडिंग और कॉन्स्टेंट वैल्यू के बीच के अंतर को गहराई से देखा और समझाया जाएगा।
JavaScript में काम की इकाइयाँ फंक्शन में समेट दी जाती हैं। जो फंक्शन एक-दूसरे से जुड़े होते हैं, उन्हें आम तौर पर एक ही फाइल में रखा जाता है।
इन फंक्शन के पैरामीटर होते हैं (ताकि वे आर्गुमेंट ले सकें), और ये return कीवर्ड की मदद से वैल्यू लौटा सकते हैं।
फंक्शन को () सिंटैक्स से कॉल किया जाता है।
function add(num1, num2) {
return num1 + num2;
}
add(1, 3);
// => 4
इस उदाहरण में फंक्शन का नाम add है।
इसके दो पैरामीटर हैं, num1 और num2।
यह एक वैल्यू लौटाता है: एक्सप्रेशन num1 + num2 का परिणाम
फिर फंक्शन add को दो आर्गुमेंट देकर कॉल किया जाता है: 1 और 3।
फंक्शन का परिणाम, यानी लौटाई गई वैल्यू, 4 है।
💡 JavaScript में फंक्शन घोषित करने के कई अलग-अलग तरीके हैं।
इनमें से कुछ तरीके function कीवर्ड इस्तेमाल करने से अलग लगते हैं।
यह ट्रैक इनसे धीरे-धीरे परिचित कराने की कोशिश करता है, लेकिन अगर आप इनके बारे में पहले से जानते हैं, तो इनमें से कोई भी बेझिझक इस्तेमाल कर सकते हैं।
ज़्यादातर मामलों में किसी एक का इस्तेमाल करना दूसरे से बेहतर या खराब नहीं होता।
किसी function, कॉन्स्टेंट या वेरिएबल को दूसरी फाइलों में उपलब्ध कराने के लिए उन्हें export कीवर्ड से एक्सपोर्ट करना पड़ता है।
इसके बाद कोई दूसरी फाइल import कीवर्ड से इन्हें इम्पोर्ट कर सकती है।
इसे मॉड्यूल सिस्टम भी कहते हैं।
सारे टेस्ट कैसे काम करते हैं, इसका एक बढ़िया उदाहरण यही है।
हर अभ्यास में कम से कम एक फाइल होती है, जैसे lasagna.js, जिसमें इम्प्लीमेंटेशन रहता है।
इम्प्लीमेंटेशन को फाइल से export किया जाता है, जिससे वह किसी दूसरी फाइल में इम्पोर्ट करने के लिए उपलब्ध हो जाता है।
इसके अलावा कम से कम एक और फाइल होती है, जैसे lasagna.spec.js, जिसमें टेस्ट होते हैं।
इम्प्लीमेंटेशन को टेस्ट करने के लिए यह फाइल सार्वजनिक (यानी export की गई) चीज़ों को import करती है:
// file.js
export const MY_VALUE = 10;
export function add(num1, num2) {
return num1 + num2;
}
// file.spec.js
import { MY_VALUE, add } from './file';
add(MY_VALUE, 5);
// => 15
लुसियन की प्रेमिका घर आ रही है, और उसने अभी तक उनकी सालगिरह का खाना नहीं पकाया है!
इस अभ्यास में, आप कुछ कोड लिखकर लुसियन को उसकी पसंदीदा कुकबुक से एक बढ़िया लज़ान्या पकाने में मदद करेंगे।
आपके पास लज़ान्या पकाने में लगने वाले समय से जुड़े चार काम हैं।
उस EXPECTED_MINUTES_IN_OVEN कॉन्स्टेंट को परिभाषित कीजिए जो बताता है कि लज़ान्या को ओवन में कितने मिनट रहना चाहिए। इसे एक्सपोर्ट करना ज़रूरी है। कुकबुक के अनुसार, ओवन में लगने वाला अपेक्षित समय 40 मिनट है।
उस remainingMinutesInOven फंक्शन को बनाइए जो लज़ान्या के ओवन में रखे जाने के वास्तविक मिनटों को पैरामीटर के रूप में लेता है और पिछले काम में बताए गए मिनटों में ओवन के अपेक्षित समय के आधार पर लौटाता है कि लज़ान्या को ओवन में अभी कितने मिनट और रहना है।
remainingMinutesInOven(30);
// => 10
उस preparationTimeInMinutes फंक्शन को बनाइए जो लज़ान्या में आपने जितनी परतें जोड़ीं, उनकी संख्या को पैरामीटर के रूप में लेता है और लौटाता है कि लज़ान्या तैयार करने में आपने कितने मिनट लगाए, यह मानकर कि हर परत को तैयार करने में आपको 2 मिनट लगते हैं।
preparationTimeInMinutes(2);
// => 4
उस totalTimeInMinutes फंक्शन को बनाइए जो दो पैरामीटर लेता है: numberOfLayers पैरामीटर लज़ान्या में आपने जितनी परतें जोड़ीं उनकी संख्या है, और actualMinutesInOven पैरामीटर लज़ान्या के ओवन में रहने के मिनटों की संख्या है। इस फंक्शन को लौटाना चाहिए कि लज़ान्या पकाने में आपने कुल कितने मिनट काम किया, जो तैयारी के मिनटों और उस समय के मिनटों का जोड़ है जो लज़ान्या ने उस समय तक ओवन में बिताया है।
totalTimeInMinutes(3, 20);
// => 26
Exercism पर साइन अप कीजिए और JavaScript को 37 कॉन्सेप्ट159 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।