एक जावास्क्रिप्ट चर एक डॉलर के संकेत के साथ क्यों शुरू होगा? [डुप्लिकेट]


1036

मैं अक्सर जावास्क्रिप्ट को चर के साथ देखता हूं जो एक डॉलर के संकेत के साथ शुरू होता है। जब आप इस तरह से एक चर का चयन करना चाहेंगे / क्यों करेंगे?

(मैं $('p.foo')सिंटेक्स के बारे में नहीं पूछ रहा हूं जो आप jQuery और अन्य में देखते हैं, लेकिन सामान्य चर जैसे $nameऔर $order)


16
यह शायद पर्ल प्रोग्रामिंग से ली गई एक आदत है। (संपादित करें: या PHP)
ब्रायन

5
कुछ भाषाओं को इसकी आवश्यकता होती है, जैसे PHP या पर्ल - मैं अनुमान लगा रहा हूं कि देव को याद नहीं था कि जावास्क्रिप्ट में इसकी आवश्यकता नहीं है।
रिच ब्रैडशॉ

3
या वे आदत छोड़ने के लिए परेशान नहीं होना चाहते थे। यह सबसे सही उत्तर है, क्योंकि इतने सारे डेवलपर्स जो अपने स्वयं के वेबपेज को एक साथ हैक करते हैं, वे PHP और जावास्क्रिप्ट का उपयोग करते हैं।
ब्लूराजा - डैनी पफ्लुगुएफ्ट

@ डोनाल्डडक मुझे लगता है कि आप अपने डुप्लिकेट को गलत तरीके से गोल कर सकते हैं - यह आपके लिंक से 7 महीने पुराना है
केन

1
@ इस उत्तर के अनुसार , यह वह उम्र नहीं है जो मायने रखती है बल्कि उत्तर कितने अच्छे हैं। मुझे व्यक्तिगत रूप से लगता है कि अन्य प्रश्न के उत्तर बेहतर हैं, यही वजह है कि मैंने इसे एक डुप्लिकेट के रूप में बंद करने के लिए मतदान किया। यदि आपको लगता है कि इस एक के उत्तर बेहतर हैं, तो आप दूसरे को डुप्लिकेट के रूप में बंद करने के लिए मतदान कर सकते हैं।
डोनाल्ड डक

जवाबों:


1419

JQuery में बहुत आम उपयोग अन्य चर से चर में संग्रहीत jQuery वस्तुओं को भेद करने के लिए है ।

उदाहरण के लिए, मैं परिभाषित करूंगा:

var $email = $("#email"); // refers to the jQuery object representation of the dom object
var email_field = $("#email").get(0); // refers to the dom object itself

मुझे यह jQuery कोड लिखने में बहुत मददगार लगता है और यह jQuery ऑब्जेक्ट्स को देखने के लिए आसान बनाता है जिसमें गुणों का एक अलग सेट है।


98
यह वास्तविक हंगेरियन अंकन है। यह चर नाम में क्या संग्रहित है, इसके बारे में जानकारी देता है। A ++ फिर हंगरी जाएगा।
आर्टेमिस

2
मेरी इच्छा है कि jquery के प्रलेखन ने इस संकेतन का उपयोग किया ... यह वास्तव में मददगार है।
11

1
@Artemis मैंने हंगेरियन को लगभग 20 साल पहले उठाया था और कभी भी इसका उपयोग करने से रोक नहीं पाया। वर्षों से बहुत से लोगों ने इसके उपयोग के साथ बहुत नाराजगी व्यक्त की है लेकिन यह इतना उपयोगी है कि मैं समझ नहीं पा रहा हूं कि क्यों।
नाइट उल्लू

10
$ के लिए अंगूठे। लेकिन चर नामों में अंडरस्कोर को रोका जाना चाहिए, सामान्य जेएस-वेरिएबल्स को कैमलकेस का उपयोग करना चाहिए। email_fields -> emailField। केवल _ के लिए वैध उपयोग-मामला निजी / संरक्षित गुणों के लिए एक उपसर्ग के रूप में है।
सीएसचफ

11
@cschuff यह कथन काफी महत्वपूर्ण है ... मैं सभी स्थानीय चर के लिए अंडरस्कोर पसंद करता हूं, और प्रोटोटाइप वस्तुओं के गुणों के लिए ऊंट-मामला आरक्षित करता हूं।
पॉल

250

ECMAScript के प्रथम, द्वितीय और तृतीय संस्करण में , स्वतः-मान्यता प्राप्त कोड के संदर्भ में छोड़कर, $ -प्रभात चर नामों का उपयोग करके स्पष्ट रूप से कल्पना द्वारा हतोत्साहित किया गया था:

एक पहचानकर्ता में कहीं भी डॉलर चिह्न ( $) और अंडरस्कोर ( _) की अनुमति है। डॉलर का संकेत केवल यंत्रवत् निर्मित कोड में उपयोग के लिए है।

हालांकि, अगले संस्करण में ( 5 वें संस्करण , जो वर्तमान है), यह प्रतिबंध हटा दिया गया था, और उपरोक्त मार्ग के साथ बदल दिया गया था

डॉलर चिह्न ( $) और अंडरस्कोर ( _) को एक पहचानकर्ता नाम में कहीं भी अनुमति दी जाती है ।

इस प्रकार, $ चिन्ह का उपयोग अब परिवर्तनशील नामों में स्वतंत्र रूप से किया जा सकता है। कुछ रूपरेखा और पुस्तकालयों के प्रतीक के अर्थ पर अपने स्वयं के सम्मेलन हैं, यहां अन्य उत्तरों में उल्लेख किया गया है।


3
हालांकि यह सच हो सकता है, क्या यह वास्तव में ओपी के सवाल का जवाब देने में मदद करता है? वर्तमान में स्वीकृत उत्तर बेहतर है - जब एक नौसिखिया जेएस प्रोग्रामर देखता है $variable, तो इसकी संभावना है क्योंकि इसमें संपूर्ण jQuery ऑब्जेक्ट शामिल है।
रिनोगो

14
@rinogo यह कुछ पूर्ण सत्य के साथ प्रश्न का उत्तर देता है जो प्रयुक्त पुस्तकालयों के बारे में मान्यताओं पर निर्भर नहीं करता है।
ओरिऑल

1
@yoyo_fun: वह कोड जो मानव द्वारा लिखे जाने के बजाय कंप्यूटर द्वारा निर्मित होता है।
cic


3
"यह कुछ पूर्ण सत्य के साथ प्रश्न का उत्तर देता है"। दरअसल, सच यह था कि देवता भाषा की इस टिप्पणी को पूरी तरह से अनदेखा कर रहे थे ... और शायद अभी भी हैं। :)
Stijn de Witt

61

जैसा कि दूसरों ने उल्लेख किया है कि डॉलर का संकेत यांत्रिक रूप से उत्पन्न कोड द्वारा उपयोग किया जाना है। हालाँकि, उस सम्मेलन को कुछ बेतहाशा लोकप्रिय जावास्क्रिप्ट पुस्तकालयों द्वारा तोड़ दिया गया है। JQuery, प्रोटोटाइप और MS AJAX (AKA Atlas) सभी इस चरित्र का उपयोग अपने पहचानकर्ताओं (या संपूर्ण पहचानकर्ता) के रूप में करते हैं।

संक्षेप में आप $जब चाहें उपयोग कर सकते हैं। (दुभाषिया शिकायत नहीं करेगा।) सवाल यह है कि आप इसका उपयोग कब करना चाहते हैं ?

मैं व्यक्तिगत रूप से इसका उपयोग नहीं करता हूं, लेकिन मुझे लगता है कि इसका उपयोग वैध है। मुझे लगता है कि एमएस AJAX यह संकेत देने के लिए उपयोग करता है कि एक फ़ंक्शन कुछ और वर्बोज़ कॉल के लिए एक उपनाम है।

उदाहरण के लिए:

var $get = function(id) { return document.getElementById(id); }

यह एक उचित सम्मेलन की तरह लगता है।


JQuery पहचानकर्ताओं में इसका उपयोग नहीं करता है, $ .X के होने का कारण बस कम टाइप करना है - jQuery.X समान है, वास्तव में $ .X jQuery.X के लिए एक नाम-उपनाम है - हर jQuery कार्यक्षमता भीतर है। jQuery-ns, $ नहीं
specializt

5
@specializt जैसा कि मैंने 5 साल पहले कहा था "या संपूर्ण पहचानकर्ता के रूप में"। पहचानकर्ता से मेरा मतलब है कि मानक सीएस परिभाषा जो कि एक शाब्दिक टोकन है जो भाषा में एक कीवर्ड नहीं है। इस मामले में $ और jQuery दो अलग-अलग पहचानकर्ता हैं जो समान मूल्य का संदर्भ देते हैं। लेकिन वे दोनों फिर भी पहचानकर्ता हैं।
बेरी जूल

56

एंगुलरजेएस के संदर्भ में, $उपसर्ग का उपयोग केवल रूपरेखा के कोड में पहचानकर्ताओं के लिए किया जाता है। ढांचे के उपयोगकर्ताओं को निर्देश दिया जाता है कि वे अपने स्वयं के पहचानकर्ताओं में इसका उपयोग न करें:

कोणीय नामस्थान $और$$

अपने कोड के साथ आकस्मिक नाम के टकराव को रोकने के लिए, कोणीय के साथ सार्वजनिक वस्तुओं के $नाम और निजी वस्तुओं के नामों को उपसर्ग करता है $$। कृपया अपने कोड में $या $$उपसर्ग का उपयोग न करें ।

स्रोत: https://docs.angularjs.org/api


35

मैं वह व्यक्ति था जिसने 2006 में इस सम्मेलन की शुरुआत की थी और इसे जल्दी jQuery की मेलिंग सूची में बढ़ावा दिया था, इसलिए मुझे इसके बारे में कुछ इतिहास और प्रेरणा साझा करने दें।

स्वीकृत उत्तर यह उदाहरण देता है:

var $email = $("#email"); // refers to the jQuery object representation of the dom object
var email_field = $("#email").get(0); // refers to the dom object itself

लेकिन यह वास्तव में यह अच्छी तरह से वर्णन नहीं करता है। इसके बिना भी $, हमारे पास अभी भी दो भिन्न चर नाम होंगे, emailऔर email_field। वहीं बहुत अच्छा है। $जब हम पहले से ही दो अलग-अलग नामों से हैं, तो हमें नामों में से एक में फेंकने की आवश्यकता क्यों होगी ?

वास्तव में, मैंने email_fieldदो कारणों से यहां उपयोग नहीं किया होगा : names_with_underscoresमुहावरेदार जावास्क्रिप्ट नहीं हैं, और fieldवास्तव में डोम तत्व के लिए कोई मतलब नहीं है। लेकिन मैंने उसी विचार का पालन किया।

मैंने कुछ अलग चीजों की कोशिश की, उनमें से बहुत कुछ उदाहरण के समान है:

var email = $("#email"), emailElement = $("#email")[0];
// Now email is a jQuery object and emailElement is the first/only DOM element in it

(बेशक एक jQuery ऑब्जेक्ट में एक से अधिक DOM तत्व हो सकते हैं, लेकिन मैं जिस कोड पर काम कर रहा था, उसमें बहुत सारे idचयनकर्ता थे, इसलिए उन मामलों में 1: 1 पत्राचार था।)

मेरे पास एक और मामला था जहां एक फ़ंक्शन को एक पैरामीटर के रूप में एक डोम तत्व प्राप्त हुआ और इसके लिए एक jQuery ऑब्जेक्ट की भी आवश्यकता थी:

// email is a DOM element passed into this function
function doSomethingWithEmail( email ) {
    var emailJQ = $(email);
    // Now email is the DOM element and emailJQ is a jQuery object for it
}

वैसे यह थोड़ा भ्रमित करने वाला है! मेरे कोड के एक बिट में, emailjQuery ऑब्जेक्ट है और emailElementDOM तत्व है, लेकिन दूसरे में, emailDOM तत्व है और emailJQjQuery ऑब्जेक्ट है।

कोई संगति नहीं थी और मैं उन्हें मिलाता रहा। प्लस यह एक उपद्रव का एक सा था कि एक ही चीज़ के लिए दो अलग-अलग नाम रखने के लिए: एक jQuery ऑब्जेक्ट के लिए और दूसरा मिलान DOM तत्व के लिए। इसके अलावा email, emailElementऔर emailJQ, मैं अन्य विविधताओं को भी आजमाता रहा।

फिर मैंने एक सामान्य पैटर्न पर ध्यान दिया:

var email = $("#email");
var emailJQ = $(email);

चूंकि जावास्क्रिप्ट $नामों के लिए केवल एक और पत्र के रूप में व्यवहार करती है , और जब से मुझे हमेशा एक $(whatever)कॉल से एक jQuery ऑब्जेक्ट मिला है , पैटर्न ने आखिरकार मेरे लिए dawned किया। मैं एक $(...)कॉल कर सकता था और कुछ पात्रों को हटा सकता था, और यह एक बहुत अच्छा नाम था:

$("#email")
$(email)

स्ट्राइकआउट एकदम सही नहीं है, लेकिन आपको यह विचार मिल सकता है: हटाए गए कुछ वर्णों के साथ, उन दोनों पंक्तियों के अंत की तरह दिख रहा है:

$email

यही कारण है कि जब मुझे एहसास हुआ कि मुझे एक सम्मेलन की तरह बनाने की जरूरत नहीं है emailElementया emailJQ। पहले से ही एक अच्छा सम्मेलन था जो मुझे घूर रहा था: कुछ पात्रों को $(whatever)कॉल से बाहर निकालें और यह बदल गया $whatever

var $email = $("#email"), email = $email[0];
// $email is the jQuery object and email is the DOM object

तथा:

// email is a DOM element passed into this function
function doSomethingWithEmail( email ) {
    var $email = $(email);
    // $email is the jQuery object and email is the DOM object
    // Same names as in the code above. Yay!
}

इसलिए मुझे हर समय दो अलग-अलग नाम नहीं बनाने पड़ते, लेकिन $उपसर्ग के साथ या उसके बिना एक ही नाम का उपयोग कर सकते थे । और $उपसर्ग एक अच्छा अनुस्मारक था जिसे मैं एक jQuery ऑब्जेक्ट के साथ काम कर रहा था:

$('#email').click( ... );

या:

var $email = $('#email');
// Maybe do some other stuff with $email here
$email.click( ... );

21

Stevo सही है, डॉलर स्क्रिप्ट संकेत का अर्थ और उपयोग (जावास्क्रिप्ट और jQuery प्लेटफॉर्म में, लेकिन PHP में नहीं) पूरी तरह से अर्थ है। $ एक ऐसा चरित्र है जिसका उपयोग पहचानकर्ता नाम के भाग के रूप में किया जा सकता है। इसके अलावा, डॉलर का चिन्ह शायद सबसे "अजीब" चीज नहीं है जिसे आप जावास्क्रिप्ट में मुठभेड़ कर सकते हैं। यहाँ मान्य पहचानकर्ता नामों के कुछ उदाहरण दिए गए हैं:

var _       = function() { alert("hello from _"); }
var \u0024  = function() { alert("hello from $ defined as u0024"); }
var Ø       = function() { alert("hello from Ø"); }
var $$$$$   = function() { alert("hello from $$$$$"); }

उपरोक्त सभी उदाहरण काम करेंगे।

उन्हे आजमायें।


7

$ पात्र का जावास्क्रिप्ट इंजन के लिए कोई विशेष अर्थ नहीं है। यह az, AZ, _, 0-9, आदि जैसे चर नाम में सिर्फ एक और मान्य चरित्र है ...


2
सच है, लेकिन जो नहीं पूछा गया था। मैं यह समझने के लिए यहां आया था कि इसका उपयोग क्यों किया गया था और ऐसा लगता है कि जिस मामले को मैं देख रहा था, वह एक डिस्क थी जिसमें एक वर्चस्व वाली वस्तु के बीच के संस्करण के बीच एक jquery वस्तु थी।
rtpHarry

3
@rtpHarry आप सवाल पूछने वाले व्यक्ति नहीं थे, और प्रश्न "क्यों" यहां पर्याप्त रूप से उत्तर दिया गया है। इसका JQuery से कोई लेना-देना नहीं है, जैसा कि प्रश्न में कहा गया था। वास्तव में, मुझे लगता है कि ऊपर दिया गया उत्तर सबसे अच्छा सवाल है - कभी-कभी यदि आप किसी ऐसी चीज को समझना चाहते हैं जिसके लिए आपको सबसे छोटे स्पष्ट उत्तर की आवश्यकता होती है - तो $जावास्क्रिप्ट का कोई विशेष अर्थ नहीं है। अवधि।
एमएन

मुझे लगता है कि कुछ .. अहम ... लोग चीजों को अधिक कोणीय-ईश प्रतीत करने के लिए चर नामों में डॉलर के संकेत जोड़ना चाहते हैं।
ग्लिफ़

2

चूंकि _एक चर नाम की शुरुआत में अक्सर एक निजी चर (या कम से कम एक निजी रहने का इरादा) को इंगित करने के लिए उपयोग किया जाता है, मैं $अपने स्वयं के संक्षिप्त उपनामों को जेनेरिक कोड पुस्तकालयों के सामने जोड़ने के लिए सुविधाजनक पाता हूं।

उदाहरण के लिए, jQuery का उपयोग करते समय, मैं चर $J(केवल के बजाय $) का उपयोग करना पसंद करता हूं और $Pphp.js, आदि का उपयोग करते समय उपयोग करता हूं।

उपसर्ग इसे अपने स्वयं के स्थिर चर जैसे अन्य चर से दृष्टिगत रूप से अलग बनाता है, मुझे इस तथ्य में उलझा देता है कि कोड किसी पुस्तकालय या अन्य का हिस्सा है, और जब वे सम्मेलन को जानते हैं तो संघर्ष या दूसरों को भ्रमित करने की संभावना कम होती है।

यह कोड को अव्यवस्थित नहीं करता (या अतिरिक्त टाइपिंग की आवश्यकता होती है) क्योंकि प्रत्येक लाइब्रेरी कॉल के लिए पूरी तरह से निर्दिष्ट नाम दोहराया जाता है।

मुझे यह सोचना पसंद है कि एकल कुंजियों की संभावनाओं के विस्तार के लिए संशोधक कुंजियों के समान क्या है।

लेकिन यह सिर्फ मेरा अपना सम्मेलन है।


2

जैसा कि मैंने पिछले 4 वर्षों से अनुभव किया है, यह किसी को आसानी से पहचानने की अनुमति देगा कि क्या चर एक मान / वस्तु या एक जिप लॉक डोम तत्व को इंगित करता है

Ex:
var name = 'jQuery';
var lib = {name:'jQuery',version:1.6};

var $dataDiv = $('#myDataDiv');

उपरोक्त उदाहरण में जब मैं चर "$ dataDiv" देखता हूं तो मैं आसानी से कह सकता हूं कि यह चर एक jQuery लिपटे DOM तत्व की ओर इशारा करता है (इस मामले में यह div है)। और यह भी कि मैं सभी jQuery के तरीकों को $ dataDiv.append (), $ dataDiv.html (), $ dataDiv.find () के बजाय $ ($ dataDiv) .append () की तरह फिर से लपेटकर कॉल कर सकता हूं।

आशा है कि यह मदद मिल सकती है। इसलिए अंत में यह कहना चाहता हूं कि इसका पालन करना एक अच्छा अभ्यास होगा लेकिन अनिवार्य नहीं।


0

${varname} बस एक नामकरण सम्मेलन jQuery डेवलपर्स चर jQuery तत्वों को पकड़ने के लिए उपयोग करने के लिए है।

प्लेन {varname}का उपयोग सामान्य सामान जैसे ग्रंथों और तार को संग्रहीत करने के लिए किया जाता है। ${varname}jQuery से दिए गए तत्व रखता है।

आप {varname}jQuery तत्वों को स्टोर करने के लिए सादे का उपयोग कर सकते हैं , लेकिन जैसा कि मैंने शुरुआत में कहा था कि यह इसे सादे चर से अलग करता है और इसे समझने में बहुत आसान बनाता है (एक सादे चर के लिए इसे भ्रमित करना और यह समझने के लिए कि यह क्या है इसे समझने के लिए सभी की खोज करना) ।

उदाहरण के लिए :

var $blah = $(this).parents('.blahblah');

यहाँ, ब्ला एक लौटे jQuery तत्व का भंडारण कर रहा है।

इसलिए, जब $blahकोड में कोई और देखता है , तो वे समझेंगे कि यह सिर्फ एक स्ट्रिंग या संख्या नहीं है, यह एक jQuery तत्व है।


6
आपने अभी 6 साल पहले स्वीकार किए गए उत्तर को फिर से लिखा है।
केन

मुझे लगता है कि जवाब "कम-गुणवत्ता" नहीं बनाता है।
सनी आर गुप्ता

-1

जब आप इसे बस अपने पहचानकर्ताओं को उपसर्ग करने के लिए उपयोग कर सकते हैं, तो इसका उपयोग उत्पन्न कोड के लिए किया जाना चाहिए, जैसे कि टेम्पलेट में प्रतिस्थापन टोकन, उदाहरण के लिए।


1
सच छह साल पहले, लेकिन अब नहीं।
मार्क अमेरी

-2

कोणीय उपयोग फ्रेमवर्क द्वारा उत्पन्न गुणों के लिए है। मान लीजिए, वे ECMA-262 3.0 द्वारा प्रदान किए गए (अब विक्षेपित) संकेत द्वारा जा रहे हैं।


-3

$ का उपयोग सामान्य चर के मामले में सामान्य चर और jquery चर के बीच DISTINGUISH करने के लिए किया जाता है। आप FLIPKART में एक ऑर्डर देते हैं तो यदि ऑर्डर एक चर है जो आपको स्ट्रिंग आउटपुट दिखा रहा है तो इसे "ऑर्डर" के रूप में सरल नाम दिया गया है लेकिन अगर हम जगह ऑर्डर पर क्लिक करते हैं तो एक वस्तु वापस आ जाती है जिसे ऑब्जेक्ट को $ "$" के रूप में दर्शाया जाएगा। आदेश "ताकि प्रोग्रामर पूरे कोड में जावास्क्रिप्ट चर और jquery चर को बाहर निकालने में सक्षम हो सके।


-4

यदि आप डॉलर चिह्न ($) या डबल डॉलर चिह्न ($ $) देखते हैं, और प्रोटोटाइप ढांचे में इसका क्या अर्थ है, इस बारे में उत्सुक हैं, तो यहां आपका जवाब है:

$$('div');
// -> all DIVs in the document.  Same as document.getElementsByTagName('div')!

$$('#contents');
// -> same as $('contents'), only it returns an array anyway (even though IDs must be unique within a document).

$$('li.faux');
// -> all LI elements with class 'faux'

स्रोत:
http://www.prototypjs.org/api/utility/dollar-dollar


5
ओपी विशेष रूप से बताता है कि वह डॉलर के उपसर्ग के इस रूप के बारे में नहीं पूछ रहा है।
निगेल एल्डर्टन

-5

कारण मैं कभी-कभी जावास्क्रिप्ट चर के साथ php नाम-सम्मेलनों का उपयोग करता हूं: इनपुट सत्यापन करते समय, मैं क्लाइंट-साइड और सर्वर-साइड दोनों को एक ही एल्गोरिदम चलाना चाहता हूं। मैं वास्तव में चाहता हूं कि कोड के दो पक्ष यथासंभव सरल हों, ताकि रखरखाव आसान हो सके। चर नामों में डॉलर के संकेतों का उपयोग करना आसान बनाता है।

(इसके अलावा, कुछ विवेकपूर्ण सहायक कार्य कोड को समान दिखने में मदद करते हैं, उदाहरण के लिए इनपुट-वैल्यू-लुकअप, स्ट्रलेन के नॉन-ओओ संस्करण, रूट आदि। यह अभी भी कुछ मैनुअल ट्विकिंग की आवश्यकता है।)


-5

एक मान्य जावास्क्रिप्ट पहचानकर्ता शुल्ड को एक अक्षर, अंडरस्कोर (_), या डॉलर चिह्न ($) से शुरू करना चाहिए; बाद के अक्षर भी अंक (0-9) हो सकते हैं। क्योंकि जावास्क्रिप्ट संवेदनशील है, अक्षरों में "Z" (अपरकेस) के माध्यम से "A" और "a" "z" (लोअरकेस) के माध्यम से वर्ण शामिल हैं।

विवरण:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables


सवाल यह नहीं था कि 'क्या एक जावास्क्रिप्ट जावास्क्रिप्ट एक डॉलर के साथ शुरू हो सकता है?', लेकिन 'एक क्यों होगा ...'। तु ओपी ऐसे नामकरण सम्मेलन का उपयोग करने के लिए एक कारण की तलाश में था।
स्टीव इव्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.