जावास्क्रिप्ट में What: ’(कोलन) क्या करता है?


178

मैं जावास्क्रिप्ट सीख रहा हूं और jQuery लाइब्रेरी के माध्यम से ब्राउज़ करते हुए मैं देखता हूं :(बृहदान्त्र) का बहुत उपयोग किया जा रहा है। जावास्क्रिप्ट में इसके लिए क्या उपयोग किया जाता है?

// Return an array of filtered elements (r)
// and the modified expression string (t)
   return { r: r, t: t };

जवाबों:


247
var o = {
    r: 'some value',
    t: 'some other value'
};

कार्यात्मक रूप से समतुल्य है

var o = new Object();
o.r = 'some value';
o.t = 'some other value';

14
तो C # ऑब्जेक्ट इनिशियलाइज़र सिंटैक्स के समान। धन्यवाद!
मीका

यदि कोई घेरने वाली वस्तु न हो तो क्या होगा?
Theonlygusti 16

@ FranciscI.B अगर मुझे अनुमान लगाना था, तो मुझे लगता है कि वह टाइपस्क्रिप्ट है, जो जावास्क्रिप्ट का एक सुपरसेट है। यह एक वर्ग घोषित कर रहा है, जिसका नाम xMin है, जिसका प्रकार एक फ्लोट है। सुंदर सुर कि इसका क्या मतलब है।
Sal_Vader_808

96

और यह भी, एक बयान को लेबल करने के लिए एक बृहदान्त्र का उपयोग किया जा सकता है। उदाहरण के लिए

var i = 100, j = 100;
outerloop:
while(i>0) {
  while(j>0) {
   j++

   if(j>50) {
     break outerloop;
   }
  }
i++

}

1
लेबल ए ((स्थिति))
मुहम्मद उमर

4
स्पेगेटी कोड में आपका स्वागत है :)
लियो द फोर

एक गोटो को प्रच्छन्न नहीं किया जा सकता है: आप बस गोटो को तोड़ते हैं; और आप इसे पा चुके हैं! ;)
एंड्रयू

1
जेएस लेबल के लिए MDN संदर्भ पृष्ठ: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
पीटर

हाँ, इसीलिए a => {b: 2}
फेंकेगा

70

आप लोग भूल रहे हैं कि बृहदान्त्र का उपयोग टर्नरी ऑपरेटर में भी किया जाता है (हालांकि मुझे नहीं पता कि अगर jquery इस उद्देश्य के लिए इसका उपयोग करता है)।

ternary ऑपरेटर एक if / if स्टेटमेंट का एक एक्सप्रेशन फॉर्म (भाव वापस मान) है। यह इस तरह प्रयोग किया जाता है:

var result = (condition) ? (value1) : (value2) ;

एक टर्नरी ऑपरेटर का उपयोग साइड इफेक्ट्स का उत्पादन करने के लिए भी किया जा सकता है जैसे कि यदि / तो, लेकिन यह गहरा बुरा व्यवहार है।


2
AKA "टर्नरी ऑपरेटर"। ध्यान दें कि ओपी वस्तु शाब्दिक मामले के बारे में सख्ती से पूछ रहा है। यदि हम ओपी से जो पूछ रहे हैं उससे भी आगे जाने के लिए, लेबल में कोलन का भी उपयोग किया जाता है।
एतेस गोरल

14
हां मेरा मतलब यही था। मुझे बस इंटरनेट से दूर रहना चाहिए, अगर मैं इस तरह की फ्लैगशिप गलत पहचान वाली प्रोग्रामिंग अवधारणाओं के बारे में जाने वाला हूं।
ब्रेटन

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

शायद उन चीजों को सूचीबद्ध करना आसान होगा जो: जावास्क्रिप्ट में उपयोग नहीं की जाती हैं।
किंगफ्रिटो_5005

45

मूल रूप से मुख्य मूल्य जोड़े के लिए ':' एक सीमांकक है। आपके उदाहरण में यह एक जावास्क्रिप्ट ऑब्जेक्ट लिटरेचर नोटेशन है।

जावास्क्रिप्ट में, वस्तुओं को संपत्ति के लिए पहचानकर्ता के परिसीमन के साथ परिभाषित किया जाता है, और इसका मूल्य इसलिए आप निम्नलिखित हो सकते हैं:

return { 
    Property1 : 125,
    Property2 : "something",
    Method1 : function() { /* do nothing */ },
    array: [5, 3, 6, 7]
};

और फिर इसका उपयोग करें जैसे:

var o =  { 
    property1 : 125,
    property2 : "something",
    method1 : function() { /* do nothing */ },
    array: [5, 3, 6, 7]
};

alert(o.property1); // Will display "125"

इसका एक सबसेट JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) के रूप में भी जाना जाता है, जो AJAX कॉल में उपयोगी है क्योंकि यह सर्वर साइड भाषाओं में पार्स करने के लिए कॉम्पैक्ट और त्वरित है और जावास्क्रिप्ट आसानी से एक JSON स्ट्रिंग को ऑब्जेक्ट में डी-सीरियल कर सकता है।

// The parenthesis '(' & ')' around the object are important here
var o = eval('(' + "{key: \"value\"}" + ')');

यदि आप किसी विशेष वर्ण या रिक्त स्थान को शामिल करते हैं, तो आप कुंजी को उद्धरण के अंदर भी रख सकते हैं, लेकिन मैं यह सलाह नहीं दूंगा कि इससे काम करने में मुश्किल होती है।

ध्यान रखें कि जावास्क्रिप्ट लैंग्वेज में जावास्क्रिप्ट ऑब्जेक्ट लिटरेचर नोटेशन मैसेज पास होने के JSON मानक से अलग है। 2 के बीच मुख्य अंतर यह है कि फ़ंक्शंस और कंस्ट्रक्टर JSON मानक का हिस्सा नहीं हैं , लेकिन जेएस ऑब्जेक्ट शाब्दिक में अनुमति है।


2
जैसा कि मैंने आपकी प्रतिक्रिया पढ़ी, मुझे लगा कि मैं इसे वोट कर दूंगा, लेकिन फिर आपने कहा कि "इसे JSON के नाम से भी जाना जाता है"। ऑब्जेक्ट शाब्दिक और JSON निश्चित रूप से एक ही बात नहीं है, वास्तव में JSON का उल्लेख करने से पहले आपके उदाहरण वैध JSON नहीं हैं।
nnnnnn

@nnnnnn 2 के बीच का अंतर बहुत सूक्ष्म है, लेकिन फिर भी महत्वपूर्ण है। मैंने अपने उत्तर को उस संबंध में अधिक विशिष्ट होने के लिए अद्यतन किया है।
दान हर्बर्ट

1
मैं अपडेट देखता हूं। अच्छा लगा। ध्यान दें कि JSON को प्रमुख नामों को उद्धरणों में होना चाहिए।
nnnnnn

आपको उस सभी का दो बार उल्लेख क्यों करना है? जब आपने कहा था "और फिर इसे उपयोग करें"
हर्षा

17

यह ऑब्जेक्ट शाब्दिक सिंटैक्स का हिस्सा है। मूल प्रारूप है:

var obj = { field_name: "field value", other_field: 42 };

तो फिर आप इन मूल्यों के साथ उपयोग कर सकते हैं:

obj.field_name; // -> "field value"
obj["field_name"]; // -> "field value"

आप मान के रूप में भी कार्य कर सकते हैं, मूल रूप से आपको वस्तु के तरीके दे रहे हैं:

obj['func'] = function(a) { return 5 + a;};
obj.func(4);  // -> 9

1
महान इसलिए क्योंकि इसने मुझे अधिक खोज करने और अधिक जानकारी प्राप्त करने के लिए शब्द दिया।
जॉनी

13

यह एक चर में वस्तुओं को सूचीबद्ध करने के लिए इस्तेमाल किया जा सकता है। इसके अलावा, अगर यह एक वाक्य के आशुलिपि में थोड़ा प्रयोग किया जाता है:

var something = {face: 'hello',man: 'hey',go: 'sup'};

और इसे इस तरह बुला रहा है

alert(something.man);

अगर वाक्य भी:

function something() {  
  (some) ? doathing() : dostuff(); // if some = true doathing();, else dostuff();
}

10

चलो स्विच स्टेटमेंट को नहीं भूलना चाहिए, जहां प्रत्येक "केस" के बाद कोलन का उपयोग किया जाता है।


10

ये आम तौर पर परिदृश्य होते हैं जहां '': 'का प्रयोग जावास्क्रिप्ट में किया जाता है

1- किसी वस्तु की घोषणा करना और उसकी शुरुआत करना

var Car = {model:"2015", color:"blue"}; //car object with model and color properties

2- एक लेबल की स्थापना (क्योंकि यह जटिल नियंत्रण संरचना और स्पेगेटी कोड के परिणामस्वरूप अनुशंसित नहीं है)

List: 
while(counter < 50)
{
     userInput += userInput;
     counter++;
     if(userInput > 10000)
     {
          break List;
     }
}

3- स्विच स्टेटमेंट में

switch (new Date().getDay()) {
    case 6:
        text = "Today is Saturday";
        break; 
    case 0:
        text = "Today is Sunday";
        break; 
    default: 
        text = "Looking forward to the Weekend";
}

4- टर्नरी ऑपरेटर में

document.getElementById("demo").innerHTML = age>18? "True" : "False";

1
एक एकल बृहदान्त्र का उपयोग शॉर्ट सर्किट मूल्यांकन के बदले में भी किया जा सकता है ||। उदाहरण: var a = false, b = a || 'Default value';के बराबर हैvar a = false, b = a : 'Default value';
शॉन कॉकरिल

7

वह JSON, या जावास्क्रिप्ट ऑब्जेक्ट संकेतन है। यह एक वस्तु, या एक हैश मानचित्र का वर्णन करने का एक त्वरित तरीका है। बृहदान्त्र से पहले की चीज संपत्ति का नाम है, और बृहदान्त्र के बाद की चीज इसका मूल्य है। तो इस उदाहरण में, एक गुण "r" है, जिसका मान चर r में जो भी है। टी के लिए भी।


3
JSON केवल जावास्क्रिप्ट ऑब्जेक्ट आरंभीकरण सिंटैक्स का एक सबसेट है। '{a: k ()}' जहां k एक फ़ंक्शन है JSON नहीं है, लेकिन यह पूरी तरह से ठीक है जावास्क्रिप्ट ऑब्जेक्ट आरंभीकरण सिंटैक्स।
yfeldblum

12
पांडित्यपूर्ण होने के लिए, नहीं, यह "JSON" नहीं है। यह JSON जैसा दिखता है। यह ऑब्जेक्ट शाब्दिक सिंटैक्स है जो जावास्क्रिप्ट का मूल है और यह सीधे कोड के अंदर दिखाई दे सकता है। दूसरी ओर JSON एक डेटा क्रमांकन / इंटरचेंज प्रारूप है। JSON केवल JSON है जब यह "एयरबोर्न" होता है, अर्थात पारगमन में या जब यह अभी तक किसी वास्तविक वस्तु में पार्स नहीं किया जाता है।
एटल गोराल

3
एईएस गोरल के लिए +1, लेकिन ध्यान दें कि दिए गए उदाहरण में JSON भी नहीं दिखता है: नामों को JSON सिंटैक्स के मान्य होने के लिए दोहरे-उद्धरणों में होना चाहिए।
NickFitz

3

एक मूर्खतापूर्ण गलती जो मैंने कुछ समय पहले की थी, वह कुछ लोगों की मदद कर सकती है।

ध्यान रखें कि यदि आप इस तरह की घटना में ":" का उपयोग कर रहे हैं, तो मान नहीं बदलेगा

var ondrag = (function(event, ui) {
            ...

            nub0x: event.target.offsetLeft + event.target.clientWidth/2;
            nub0y = event.target.offsetTop + event.target.clientHeight/2;

            ...
        });

तो "nub0x" पहली घटना के साथ आरंभ करेगा जो कभी घटती है और कभी भी इसका मूल्य नहीं बदलेगी। लेकिन अगली घटनाओं के दौरान "nub0y" बदल जाएगा।


मैं इस पर आया था, और fyi वास्तव में यहाँ क्या हो रहा है कि आप अपने बयान से पहले एक लेबल का उपयोग कर रहे हैं। कोई असाइनमेंट नहीं किया गया है, लेकिन स्टेटमेंट event.target.offsetLeft + event.target.clientWidth/2;हर बार आपके ऑनड्रैग मेथड को रन करता है, लेकिन वैल्यू को कभी असाइन न करेंnub0x
kketch

वास्तव में यह एक मूल्यांकन के रूप में इस्तेमाल किया जा रहा है, और यह :माना जा रहा है जैसे कि यह एक था ||। इसलिए, event.target.offsetLeft + event.target.clientWidth/2;केवल हर बार ट्रिगर किया जाएगा बशर्ते nub0xकि झूठे के लिए समान हो।
शॉन कॉकरिल

1

जावास्क्रिप्ट में कोलन का एक और उपयोग एक चर का नाम बदलना है, जो है:

const person = { 
    nickNameThatIUseOnStackOverflow: "schlingel",
    age: 30,
    firstName: "John"
};
const { nickNameThatIUseOnStackOverflow: nick } = person; // I take nickNameThatIUseOnStackOverflow but want to refer it as "nick" from now on.
nick = "schling";

यह उपयोगी है यदि आप किसी तीसरे पक्ष के पुस्तकालय का उपयोग करते हैं जो आपके कोड में नाम बदलने के लिए अजीब / लंबे चर नाम वाले मान लौटाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.