जवाबों:
आप सुरक्षित रूप से typeof
अपरिभाषित चर पर ऑपरेटर का उपयोग कर सकते हैं ।
यदि इसे शून्य सहित कोई मान असाइन किया गया है, तो टाइपऑफ़ अपरिभाषित के अलावा कुछ और लौटाएगा। टाइपोफ़ हमेशा एक स्ट्रिंग लौटाता है।
इसलिये
if (typeof maybeObject != "undefined") {
alert("GOT THERE");
}
यहां बहुत सारे अर्ध-सत्य हैं, इसलिए मैंने सोचा कि मैं कुछ चीजें स्पष्ट करता हूं।
वास्तव में आप सटीक रूप से यह नहीं बता सकते हैं कि क्या कोई चर मौजूद है (जब तक कि आप हर दूसरी पंक्ति को एक कोशिश करने वाले ब्लॉक में लपेटना नहीं चाहते हैं)।
कारण है जावास्क्रिप्ट का यह कुख्यात मूल्य है undefined
जिसका हड़ताली मतलब यह नहीं है कि चर परिभाषित नहीं है, या यह मौजूद नहीं हैundefined !== not defined
var a;
alert(typeof a); // undefined (declared without a value)
alert(typeof b); // undefined (not declared)
तो एक चर जो मौजूद है और दूसरा वह जो आपको undefined
टाइप नहीं कर सकता है ।
@ केविन की गलत धारणा के लिए, के रूप में null == undefined
। यह टाइप क्यूरेशन के कारण होता है, और यह मुख्य कारण है कि क्रॉकफोर्ड हर किसी को बताता रहता है जो इस तरह की चीज के बारे में अनिश्चित है कि वह हमेशा ===
गलत समानता वाले मूल्यों के परीक्षण के लिए सख्त समानता ऑपरेटर का उपयोग करें । null !== undefined
आपको वह देता है जिसकी आप उम्मीद कर सकते हैं। कृपया ध्यान दें, यह foo != null
जाँचने का एक प्रभावी तरीका हो सकता है कि एक चर है undefined
या नहीं null
। बेशक आप स्पष्ट हो सकते हैं, क्योंकि यह पठनीयता में मदद कर सकता है।
यदि आप प्रश्न को जांचने के लिए प्रतिबंधित करते हैं कि क्या कोई वस्तु मौजूद है, typeof o == "object"
तो एक अच्छा विचार हो सकता है, सिवाय इसके कि अगर आप ऑब्जेक्ट को एरेस नहीं मानते हैं, क्योंकि यह भी इस प्रकार की सूचना देगा, object
जिससे आप थोड़ा भ्रमित हो सकते हैं। इसका उल्लेख नहीं करना typeof null
भी आपको देगा object
जो कि गलत है।
मौलिक क्षेत्र है जहां आप वास्तव में के बारे में सावधान रहना चाहिए typeof
, undefined
, null
, unknown
और अन्य misteries मेजबान वस्तुओं रहे हैं। उन पर भरोसा नहीं किया जा सकता। वे लगभग किसी भी गंदी चीज को करने के लिए स्वतंत्र हैं जो वे चाहते हैं। तो उनके साथ सावधान रहें, यदि आप कर सकते हैं, तो कार्यक्षमता की जांच करें, क्योंकि यह एक ऐसी सुविधा का उपयोग करने का एकमात्र सुरक्षित तरीका है जो मौजूद नहीं हो सकता है।
foo!=null
अगर foo
परिभाषित नहीं किया जाता है तो बस एक रेफ़रेंस प्रोड्यूस करेगा । इस प्रकार, इसका उपयोग करना बेहतर है typeof
, जब तक कि आप अपवाद को पकड़ने की योजना नहीं बना रहे हों।
undefined !== not defined
&&foo != null can be an effective way to check if a variable is neither 'undefined' nor 'null'
। मैंने कहा कि != null
अगर यह मौजूद है तो जाँच के लिए अच्छा नहीं है। आप इसे संदर्भ से बाहर ले जा रहे हैं। (मैंने यह भी उल्लेख किया कि यह एक विचारधारा है, ओपी के प्रश्न के विषय से कड़ाई से संबंधित नहीं है)
undefined
। वे एक जैसे नहीं हैं। (note) it can be used !== you should use
। पढ़ते समय सामान्य ज्ञान का प्रयोग करें। जब चर घोषित किया जाता है (पैरामीटर सूची, या कहीं और) और आप यह जांचना चाहते हैं कि क्या इसे एक मूल्य मिला है, !=
अशक्त पूरी तरह से सुरक्षित है। ओपी ने जो मांगा, उससे यह एक अलग प्रयोग है, इसीलिए मैंने इसे नोट के रूप में प्रस्तुत किया। पूरा पैराग्राफ @ केविन के पोस्ट और टाइप कॉर्शन बीडब्ल्यूटी के बारे में है। जैसा कि आप ध्यान से पढ़े तो नोटिस कर सकते हैं।
!= null
जब आप जानते हैं कि चर घोषित किया गया है। फ़ंक्शन तर्कों की जाँच करने के लिए यह बहुत उपयोगी है, विचार करें:var hasValue = function(foo) {return foo != null}
दो तरीके।
आप टाइपोफ़ का उपयोग करके स्थानीय वस्तु के लिए परीक्षण कर सकते हैं:
if (typeof object !== "undefined") {}
आप विंडो ऑब्जेक्ट का निरीक्षण करके एक वैश्विक ऑब्जेक्ट (वैश्विक गुंजाइश पर परिभाषित) के लिए परीक्षण कर सकते हैं:
if (window.FormData) {}
यदि वह एक वैश्विक वस्तु है, तो आप उपयोग कर सकते हैं if (!window.maybeObject)
window.hasOwnProperty('maybeObject')
कि यह एक वैश्विक वस्तु है, थोड़ा अधिक पठनीय है
आप "टाइपोफ़" का उपयोग कर सकते हैं।
if(typeof maybeObject != "undefined")
alert("GOT HERE");
कुछ समय पहले धागा खोला गया था। मुझे लगता है कि इस बीच एक टर्नरी ऑपरेटर का उपयोग सबसे सरल विकल्प है:
maybeObject ? console.log(maybeObject.id) : ""
var maybeObject = typeof maybeObject !== "undefined" ? Chart:false;
और जाँच करें कि क्या नहीं false
।
मैं बस if(maybeObject)
अपने javascripts में null check के रूप में करता था।
if(maybeObject){
alert("GOT HERE");
}
तो केवल अगर maybeObject
- एक वस्तु है, तो अलर्ट दिखाया जाएगा। मेरी साइट में एक उदाहरण है।
https://sites.google.com/site/javaerrorsandsolutions/home/javascript-dynamic-checkboxes
maybeObject
है 0, 0.0, or ""
, तो यह झूठे की जाँच करता है
मैंने अभी-अभी ऊपर से टाइपऑफ उदाहरणों का परीक्षण किया है और कोई भी मेरे लिए काम नहीं करता है, इसलिए इसके बजाय मैंने इसका उपयोग किया है:
btnAdd = document.getElementById("elementNotLoadedYet");
if (btnAdd) {
btnAdd.textContent = "Some text here";
} else {
alert("not detected!");
}
ऑब्जेक्ट / वैरिएबल के अस्तित्व की जांच करने के अलावा आप "सबसे खराब स्थिति" आउटपुट प्रदान करना चाहते हैं या कम से कम इसे एक चेतावनी में फंसा सकते हैं ताकि यह किसी का ध्यान न जाए।
फ़ंक्शन का उदाहरण जो जांचता है, विकल्प प्रदान करता है, और त्रुटियों को पकड़ता है।
function fillForm(obj) {
try {
var output;
output = (typeof obj !== 'undefined') ? obj : '';
return (output);
}
catch (err) {
// If an error was thrown, sent it as an alert
// to help with debugging any problems
alert(err.toString());
// If the obj doesn't exist or it's empty
// I want to fill the form with ""
return ('');
} // catch End
} // fillForm End
मैंने इसे भी बनाया क्योंकि मैं जिस वस्तु को पास कर रहा था वह x, xm, xm [z] और टाइपोफ़ xm [z] हो सकती है अगर xm मौजूद नहीं होता है तो एक त्रुटि के साथ विफल हो जाएगा।
मुझे उम्मीद है यह मदद करेगा। (BTW, मैं JS के साथ नौसिखिया हूँ)
यदि आप केवल इसके अस्तित्व की परवाह करते हैं (क्या यह घोषित किया गया है?), तो स्वीकृत उत्तर ही पर्याप्त है:
if (typeof maybeObject != "undefined") {
alert("GOT THERE");
}
यदि आपको इसकी वास्तविक कीमत की परवाह है, तो आपको जोड़ना चाहिए:
if (typeof maybeObject != "undefined" && maybeObject != null ) {
alert("GOT THERE");
}
जैसा typeof( null ) == "object"
जैसे bar = { x: 1, y: 2, z: null}
typeof( bar.z ) == "object"
typeof( bar.not_present ) == "undefined"
इस तरह से आप जाँच लें कि यह न तो है null
या undefined
, और के बाद से typeof
यदि मान मौजूद नहीं है नहीं त्रुटि करता प्लस&&
शॉर्ट सर्किट, आप एक रन-टाइम त्रुटि मिल कभी नहीं होगा।
व्यक्तिगत रूप से, मैं सुझाव दूंगा कि कहीं न कहीं एक सहायक fn (और चलो भरोसा नहीं करते typeof()
):
function exists(data){
data !== null && data !== undefined
}
if( exists( maybeObject ) ){
alert("Got here!");
}
if (n === Object(n)) {
// code
}
Div संरेखित टैब्ड पैनल का उपयोग करके एक फ्रेम इनलाइन फ्रेम के लिए टेक्स्टबॉक्स मान सेट करें। इसलिए सबसे पहले, मूल्य निर्धारित करने से पहले हमें चयनित टैब्लेट पैनल फ्रेम उपलब्ध चेक की जरूरत है या निम्नलिखित कोड का उपयोग नहीं करना चाहिए:
जावास्क्रिप्ट कोड:
/////////////////////////////////////////
<script>
function set_TextID()
{
try
{
if(!parent.frames["entry"])
{
alert("Frame object not found");
}
else
{
var setText=document.getElementById("formx").value;
parent.frames["entry"].document.getElementById("form_id").value=setText;
}
if(!parent.frames["education"])
{
alert("Frame object not found");
}
else
{
var setText=document.getElementById("formx").value;
parent.frames["education"].document.getElementById("form_id").value=setText;
}
if(!parent.frames["contact"])
{
alert("Frame object not found");
}
else
{
var setText=document.getElementById("formx").value;
parent.frames["contact"].document.getElementById("form_id").value=setText;
}
}catch(exception){}
}
</script>
शून्य और अशक्त अंतर्निहित संकेत हैं। यदि आप स्क्रीन पर '0' अंकगणित, तुलना या मुद्रण नहीं कर रहे हैं, तो वास्तव में इसे टाइप करने की कोई आवश्यकता नहीं है। इसका निहितार्थ है। जैसा कि निहित है। इसी कारण से टाइपोफ की भी आवश्यकता नहीं है। घड़ी।
if (obj) कंसोल.लॉग ("मौजूद है");
मैंने नहीं देखा है या नहीं के लिए अनुरोध के रूप में इसके लिए शामिल नहीं है। के रूप में ज्यादा के रूप में मैं अतिरिक्त सामग्री जो सवाल में फिट नहीं है प्यार करता हूँ। इसे सरल रखें।
if (!maybeObject)
- लेकिन वास्तव में, शीर्षक विपरीत के लिए पूछता है।
या, आप सभी मेरे अनन्य अस्तित्व का उपयोग शुरू कर सकते हैं () इसके बजाय पद्धति और असंभव मानी जाने वाली चीजों को करने में सक्षम हो सकते हैं। अर्थात:
जैसी चीजें: exists("blabla")
या यहां तक कि: exists("foreignObject.guessedProperty.guessNext.propertyNeeded")
भी संभव हैं ...
!==
में तुलना के लिए (चाहिए) कर सकते हैं ।