2010-11-13 19 views
26

यदि हां, तो इस तरह की घोषणा के लिए वाक्यविन्यास क्या है?जावास्क्रिप्ट में वैश्विक स्थिरांक घोषित किया जा सकता है?

+0

यदि वैश्विक रूप से आप एक चर का अर्थ है जो डोमेन के पृष्ठों पर परिवर्तन के बाद बुलाया जा सकता है तो आपको कुकीज़ की आवश्यकता है .. – crodjer

+0

@Dcrodger: नहीं, केवल कार्यों के बीच वैश्विक। इसके अलावा, यह स्थिर है, एक चर नहीं - इसलिए कुकीज़ अधिक हो जाएगी। – Giffyguy

+0

यह भी देखें: http://stackoverflow.com/questions/130396/are-there-constants-in-javascript – Ken

उत्तर

23

जावास्क्रिप्ट में वास्तव में नामित निरंतर, या किसी ऑब्जेक्ट की अपरिवर्तनीय संपत्ति की धारणा नहीं है। (ध्यान दें कि मैं ES5 के बारे में यहाँ बात नहीं कर रहा हूँ।)

आप वैश्विक एक सरल var घोषणा के साथ वैश्विक क्षेत्र में, एक स्क्रिप्ट एक वेब पेज से शामिल किसी भी समारोह के बाहर की तरह घोषणा कर सकते हैं:

<script> 
    var EXACTLY_ONE = 1; 

फिर आपका कोड उस निरंतर पाठ्यक्रम का उपयोग कर सकता है, हालांकि यह वास्तव में "स्थिर" नहीं है क्योंकि मान बदला जा सकता है (संपत्ति को अन्य शब्दों में अपडेट किया गया है)।

+4

अद्यतन - ईएस 6 सद्भाव में अधिकांश आधुनिक ब्राउज़रों और मानक में उपलब्ध कॉन्स कीवर्ड: https://developer.mozilla.org/एन-यूएस/डॉक्स/वेब/जावास्क्रिप्ट/संदर्भ/विवरण/कॉन्स – netpoetica

+0

दस्तावेज़ पढ़ें! कॉन्स दायरे तक सीमित है, इसलिए कुछ ऐसा है: 'अगर (DEBUG) {const HOST = "locahost";} else {const HOST = "coolhost";}' वैश्विक स्तर पर 'HOST' का खुलासा नहीं करेगा। –

10

सब कुछ वैश्विक है जब तक var कीवर्ड के साथ घोषित नहीं किया जाता है।

कोई भी स्थिरांक नहीं हैं। आप उन्हें var कीवर्ड के बिना बस घोषित कर सकते हैं।

आप वैश्विक गुंजाइश सुनिश्चित करना चाहते हैं तो आप इसे window वस्तु में फेंक कर सकते हैं:

window.GLOBAL_CONSTANT = "value"; 

आप किसी भी दायरे के भीतर से ऐसा कर सकते हैं। तब कॉन्स्टेंट को फ़ंक्शंस या क्लोजर के अंदर घोषित किया जा सकता है, हालांकि मैं इसकी अनुशंसा नहीं करता।

22

"पॉइंटी" इतनी सावधानीपूर्वक नोट्स के रूप में, ईसीएमएस्क्रिप्ट में ऐसी कोई सुविधा नहीं है। हालांकि, JavaScript does:

const a = 7; 
document.writeln("a is " + a + "."); 
बेशक

, आप वेब ब्राउज़र में चलाने के लिए वेब पर डाल करने के लिए कोड लिख रहे हैं, तो यह आप अधिक सहायता नहीं हो सकता है। :-)

+4

पृथ्वी पर क्यों गिरा दिया गया है? यदि आप मोज़िला-केवल पर्यावरण में काम कर रहे हैं तो यह सच है, ज्ञात और उपयोगी नहीं है। मुझसे +1 –

+5

@ टिम, किसी ऐसे व्यक्ति द्वारा डाउन-वोट किया गया था जो ईसीएमएस्क्रिप्ट और जावास्क्रिप्ट (टीएम) ..., +1 से भी अंतर नहीं जानता ... बीटीडब्ल्यू एक बात ध्यान में रखना, यह है कि टीसी 3 9 समिति के पास है एक सेट [कार्यान्वयनकर्ताओं के लिए सिफारिशें] (http://j.mp/agMtti) को मंजूरी दे दी है, जिसमें गैर-मानक घोषणाओं पर प्रतिबंध शामिल हैं- 'const'- सख्त मोड कोड पर। फिलहाल फ़ायरफ़ॉक्स 4 में सख्त मोड के तहत गैर-मानक घोषणाओं के बारे में कोई प्रतिबंध नहीं है, लेकिन वेबकिट के जावास्क्रिप्टकोर में उन्हें आईएमओ- वास्तव में अच्छी बात है- आप 'कॉन्स' का उपयोग नहीं कर सकते हैं या 'ब्लॉक्स' के अंदर 'फंक्शन डिसक्लेरेशन' नहीं कर सकते हैं ... बस ध्यान में रखना .. – CMS

+0

@ सीएमएस: दिलचस्प, मैंने उसमें ध्यान नहीं दिया था। धन्यवाद। –

3

यदि आप यह सुनिश्चित करना चाहते हैं कि मान किसी फ़ंक्शन का उपयोग नहीं कर सकता है।

तो, बजाय:

var Const_X=12 

उपयोग:

function Const_X() { 
return 12; 
} 
+0

पुराना उत्तर, लेकिन मुझे पूरा यकीन है कि आप कार्यों को ओवरराइड कर सकते हैं। – Midnightas

2

आप केवल नए ब्राउज़र का समर्थन (या ऐसे कोलाहल के रूप में एक transpiler उपयोग कर रहे हैं पुराने ब्राउज़र का समर्थन करने के लिए) के बारे में परवाह है, तो आप कर सकते हैं निम्नलिखित:

  1. एक सेटिंग्स बनाएं।जे एस और जो कुछ स्थिरांक आप चाहते हैं के साथ फ़ाइल निर्यात उन्हें:
export const FRUIT = "kiwi"; 
export const VEGETABLE = "carrot"; 
  1. है कि आप उन्हें उपयोग करने के लिए आप तो उन्हें आयात कर सकता है इस प्रकार चाहते फाइलों में:
import * as Settings from './settings.js' 
  1. n उपयोग करने के लिए स्थिरांक कुछ इस तरह करते हैं:
console.log("The unchangeable fruit is " + Settings.FRUIT); 

यह आपको एकाधिक JavaScript फ़ाइलों है कि आप उपयोग करना चाहते हैं, खासकर जब एक वैश्विक लगातार लागू करने के लिए कोशिश कर रहा है की तुलना में काफी क्लीनर दृष्टिकोण है

संबंधित मुद्दे