हमें कब और कहाँ जावास्क्रिप्ट में उत्थापन का उपयोग करना चाहिए [बंद]


11

मैं जावास्क्रिप्ट के लिए नया हूँ। मैं जावास्क्रिप्ट में उत्थापन की अवधारणा सीख रहा हूं। मोज़िला वेबसाइट
में Javacsript ट्यूटोरियल्स के आधार पर , मैं इस शब्द पर आया हूँ । उन ट्यूटोरियल के अनुसार, जावास्क्रिप्ट में चर एक अपवाद के बिना बाद में घोषित चर का उल्लेख कर सकते हैं । लेकिन, मेरा सवाल यह है कि क्लाइंट-साइड जावास्क्रिप्ट में उत्थापन का उपयोग करना किन परिस्थितियों में उपयुक्त है या हमें जावास्क्रिप्ट में उत्थापन का उपयोग क्यों करना चाहिए। इसके क्या फायदे हैं।hoisting


1
अपने शोध को साझा करना हर किसी की मदद करता है। हमें बताएं कि आपने क्या प्रयास किया है और यह आपकी आवश्यकताओं को पूरा क्यों नहीं करता है। यह दर्शाता है कि आपने खुद को मदद करने का प्रयास करने के लिए समय लिया है, यह हमें स्पष्ट उत्तरों को दोहराने से बचाता है, और सबसे अधिक यह आपको अधिक विशिष्ट और प्रासंगिक उत्तर प्राप्त करने में मदद करता है। यह भी देखें कि कैसे पूछें
gnat

6
@gnat तमाम शोधों के बाद, अगर मैं इस विषय को समझ गया होता, तो इस अवधारणा को ठीक से चर्चा करने और समझने के लिए मैंने इस सवाल को यहाँ क्यों पोस्ट किया होगा
रुद्र

2
@ रुद्र यह चर्चा मंच नहीं है । इसके अलावा, आपने कोई प्रमाण नहीं दिखाया है कि आपने वास्तव में इस पर शोध किया है।
डोभाल

5
हां, लेकिन यह प्रश्न पूछने की आवश्यकता नहीं है।
रॉबर्ट हार्वे

2
@ रुद्र: ध्यान रखें कि हम चर्चा मंच नहीं हैं। हम वास्तव में एक प्रश्नोत्तर साइट हैं। यहां पूछे गए प्रश्नों को प्रश्नोत्तर प्रारूप में यथोचित उत्तर देने के लिए बंद किया जाना चाहिए।
रॉबर्ट हार्वे

जवाबों:


11

मैंने कभी "उत्थापन" शब्द का इस्तेमाल नहीं किया है। यदि आप बेन चेरी द्वारा फहराए जाने के इस उपयोग का उल्लेख कर रहे हैं: http://www.adequatelygood.com/JavaScript-Scoping-and-Histing.html , तो मैं क्या इकट्ठा कर सकता हूं, वह बस जावास्क्रिप्ट के साथ डगलस क्रॉकफोर्ड को गूँज रहा है: अच्छे हिस्से , और यह कहते हुए कि आपको कभी भी ध्वजारोहण नहीं करना चाहिए । अंत में उनका दावा है कि सभी चर आपके कार्य के शीर्ष पर घोषित किए जाने चाहिए (जैसे कि क्रॉकफोर्ड और जेएसएलआईएनटी सुझाव)।

या, मिस्टर क्रिस्टोफरब्रॉन के शब्दों में, इसका उपयोग , प्रति-कहने की सुविधा नहीं है , लेकिन केवल एक क्विक है कि ब्राउज़र जावास्क्रिप्ट की व्याख्या कैसे करता है।

तो, संक्षेप में: कभी नहीं और कहीं नहीं


1
फिर, इस अवधारणा को क्यों शामिल किया गया है और इस बारे में क्या विशेषता है?
रुद्र

डेविड से जुड़े लेख में @Rudra: उप-विषयक "घोषणाएँ, नाम और उत्थापन" इस सुंदर कुँए को ढँकते हुए प्रतीत होते हैं। कौन सा हिस्सा अस्पष्ट है?
रॉबर्ट हार्वे

@RobertHarvey मैं सिर्फ यह जानना चाहता हूं कि वे इसका उपयोग कहां और कब करते हैं। डेविड कहते हैं कि इसका इस्तेमाल कभी नहीं किया जाता है और कहीं नहीं होता है, लेकिन इसे एक विशेषता के रूप में क्यों दिखाया गया है
रुद्र

4
सिर्फ इसलिए कि कुछ एक विशेषता है इसका मतलब यह नहीं है कि यह एक अच्छा विचार है। "सुविधाओं" के पक्ष से बाहर होने के कई कारण हैं। यहां तक ​​कि आपका परिशिष्ट भी स्पष्ट रूप से उपयोगी उद्देश्य नहीं रखता है, भले ही यह गुफा के आदमी दिनों में किया हो।
रॉबर्ट हार्वे

1
उत्थापन संकलक सिद्धांत से एक शब्द है, विशेष रूप से अनुकूलन। यह कम से कम 20 वर्षों के लिए रहा है, लेकिन जावास्क्रिप्ट की इस ख़ासियत से लोकप्रिय हुआ। यदि इसे एक विशेषता नहीं कहा जाता है, तो यह संभवतः एक बग होगा।
david.pfx

16

उत्थापन एक विशेषता का वर्णन करता है कि कैसे ब्राउज़र द्वारा जावास्क्रिप्ट की व्याख्या की जाती है, और इसका उपयोग करने के लिए इतनी सुविधा नहीं है।

जावास्क्रिप्ट की व्याख्या करते समय, ब्राउज़र फ़ंक्शन की शुरुआत में फ़ंक्शन-स्तरीय चर की गुंजाइश रखते हैं। उदाहरण:

function AddTwoAndTwo() {
    var two = 2;
    var result = two + two;
    return result;
}

पोस्ट किए गए कोड में, दोनों चर "दो" और "परिणाम" फ़ंक्शन स्कोप के प्रारंभ में मौजूद हैं (जाहिर है, जैसा कि वे वहां घोषित किए गए हैं।) हालांकि, क्योंकि ब्राउज़र चर "उत्थापन" कर रहे हैं, निम्नलिखित कानूनी जावास्क्रिप्ट कोड बन जाता है। ।

function AddTwoAndTwo() {
    result = 5;
    alert(result);
    var two = 2;
    var result = two + two;
    return result;
}

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

var result = 6;

function AddTwoAndTwo() {
    alert(result);  // should this be 6 or undefined?
    var two = 2;
    var result = two + two;
    return result;
}

भ्रम से बचने के लिए, किसी फ़ंक्शन के शीर्ष पर अपने चर घोषित करें।


4
+1: यह है कि मैं कैसे उत्तर दूंगा। यह उपयोग करने या न करने की सुविधा नहीं है, यह पर्यावरण की एक संपत्ति है जिसे ध्यान में रखना चाहिए।
स्क्रैप्ट

1

क्यों?

जावास्क्रिप्ट में ब्लॉक स्कोप नहीं है , जो यह बताए कि चीजों को शीर्ष पर क्यों लहराया जाना चाहिए ।

क्या यह उपयोगी है?

यदि आप इसे पसंद करते हैं:

var someVariable = someVariable || {};

इसके अलावा:

if ( "undefined" !== typeof someVariable ) {
    someVariable = someVariable;
} else {
    someVariable = {};
}

तब यह उपयोगी है। भले ही आप इसे नोटिस न करें!

Clearification

पहला उदाहरण कुछ इस तरह अनुवाद करेगा:

var someVariable = someVariableValue;

if ( "undefined" !== typeof someVariable ) {
    var someVariableValue = someVariable;
} else {
    var someVariableValue = {};
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.