नहीं, आप इस तरह के एक समारोह का उत्पादन नहीं कर सकते हैं।
any_function(undeclared_variable)
एक ReferenceError का उत्पादन करेगा अगर undeclared_variable
कहीं भी घोषित नहीं किया गया था: समस्या यह है कि यह है। उदाहरण के लिए, अगर आप इस अकेले खड़े कोड चलाएँ:
function f() { }
f(pancakes);
आप एक ReferenceError मिलेगा क्योंकि pancakes
कहीं भी घोषित नहीं किया गया था। डेमो: http://jsfiddle.net/ambiguous/wSZaL/
हालांकि, typeof
operator कुछ है कि तो यह घोषित नहीं किया गया पर इस्तेमाल किया जा सकता:
console.log(typeof pancakes);
बस कंसोल में एक undefined
प्रवेश करेंगे। डेमो: जब से तुम अघोषित चर पर typeof
उपयोग करने के लिए सक्षम होने के लिए की जरूरत नहीं है
function exists(obj, key) {
if (typeof obj !== "undefined" && obj !== null)
return obj[key];
return null; // Maybe you'd want undefined instead
}
या,: http://jsfiddle.net/ambiguous/et2Nv/
आप संभव ReferenceErrors कोई आपत्ति नहीं है, तो आप पहले से ही आवश्यक समारोह अपने प्रश्न में है यहाँ, आप इसे करने के लिए नीचे को आसान बनाने में कर सकते हैं:
function exists(obj, key) {
if(obj != null)
return obj[key];
return null;
}
नोट !=
करने के लिए परिवर्तन, undefined == null
भले ही undefined === null
नहीं है सच है।
स्रोत
2013-06-27 16:50:29
के लिए यह एक सामान्य प्रयोजन ही टिककर खेल ('definegetter (ओ, समारोह (संपत्ति) {...})', जो कर रहे हैं, अगर मैं correclty याद है, नहीं जावास्क्रिप्ट के विवरण के एक हिस्से। – Zeta
नहीं @Zeta की आवश्यकता होगी वास्तव में, किसी ऑब्जेक्ट की किसी भी प्रकार की संपत्ति को एक्सेस करने के बाद विफल होने की बजाय 'अपरिभाषित' लौटाता है, जो पर्याप्त होना चाहिए। – millimoose
निकटतम मैं सोच सकता हूं कि 'कार्य मौजूद है (ओबीजे) {if (obj) वापसी obj; वापसी {}; } ', लेकिन वह अपरिभाषित चर को संभाल नहीं पाएगा। जावास्क्रिप्ट उस तरह से वाक्यगत रूप से एक्स्टेंसिबल नहीं है। – millimoose