2012-12-06 26 views
22

जब मैं एक निम्न स्क्रिप्ट में निम्न आदेश चलाता हूं तो मुझे एक त्रुटि मिल रही है। लेकिन अगर मैं Google क्रोम कंसोल से कमांड चलाता हूं, तो यह ठीक से काम करता है।जावास्क्रिप्ट - अनकॉट रेफरेंसरर: कुंजियों को परिभाषित नहीं किया गया है

var a = {}; 
console.log(keys(a)); 

त्रुटि:

Uncaught ReferenceError: keys is not defined 

यहाँ क्या हो रहा है? मैं एक स्क्रिप्ट में keys फ़ंक्शन का उपयोग कैसे कर सकता हूं?

+1

तो इसका मतलब है कि 'कंसोल' 'कुंजी' फ़ंक्शन को परिभाषित करता है, और आपका कोड नहीं होता है। आपका सवाल क्या हैं? –

+0

जावास्क्रिप्ट में कई फ़ंक्शन पूर्वनिर्धारित हैं। उदाहरण के लिए 'लम्बाई' संपत्ति। ए = [1,2]। a.length देता है 2. यहां, कुंजी एक ऐसा फ़ंक्शन है जो किसी ऑब्जेक्ट की सरणी सरणी प्रारूप में देता है। यह काम कर रहा है जब मैं कंसोल में कमांड चलाता हूं लेकिन स्क्रिप्ट फ़ाइल में 'कुंजी' फ़ंक्शन का उपयोग करते समय उस त्रुटि को प्राप्त करता हूं। – user1767962

+1

दाएं। 'कंसोल' एक 'कुंजी' फ़ंक्शन को परिभाषित करता है। इसका मतलब यह नहीं है कि जावास्क्रिप्ट करता है। –

उत्तर

29
console.log(keys(a)) 

keys() ब्राउज़र द्वारा आपके कोड में उपयोग के लिए प्रदान नहीं किया गया कार्य नहीं है। आप शायद Object.keys()

a = {}; 
console.log(Object.keys(a)); 

चाहते कभी कभी सांत्वना है कि अपने वास्तविक कोड में उपलब्ध नहीं हैं उपयोग डिबगिंग में आसानी के लिए यह के संपर्क में अतिरिक्त कार्य करती है। keys() एक जैसा लगता है, और copy('some text') एक और है।

मैं एक लिंक खोजने में असफल रहा हूं जो दुख की बात है। लेकिन मुझे पूरा यकीन है कि उन 2 कार्यों से अधिक हैं।

+4

मैं मानता हूं कि यह प्रश्न रचनात्मक है। मैं बहुत सारी जावास्क्रिप्ट नहीं करता हूं और बस यह वही सवाल था। अर्थात्, "क्रोम डीबगर में 2 सेकंड पहले जब मैंने अपना कोड डीबग किया था, तो मुझे कुंजी त्रुटियों पर यह त्रुटि क्यों मिल रही है?" अब मुझे पता है। – dlb8685

1

जब भी आपको इस तरह की कोई त्रुटि मिलती है, तो उस कार्य/चर की परिभाषा को खोजने का प्रयास करें जिसे अपरिभाषित बताया गया है। यदि यह परिभाषित किया गया है, तो ऐसा कोई कारण ढूंढने का प्रयास करें जो यह काम नहीं कर रहा है। क्या आप जानते हैं कि keys फ़ंक्शन Object कन्स्ट्रक्टर के अलावा है? आप इसे कॉल नहीं कर सकते जैसे कि यह एक नि: शुल्क कार्य है। हालांकि अगर आप ऐसा करने का आदत में मिलता है, यह अनुमति देने के लिए अपने स्वयं के समारोह बनाने का प्रयास करें:

function key(object) { 

    return Object.keys(object); 

} 

आपका कोड इस तरह एक परिभाषा दी पास करना चाहिए।

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