জাভাস্ক্রিপ্টে কখন এবং কোথায় আমাদের উত্তোলন ব্যবহার করা উচিত [বন্ধ]


11

আমি জাভাস্ক্রিপ্টে নতুন। আমি জাভাস্ক্রিপ্টে উত্তোলনের ধারণাটি শিখছি। মোজিলা ওয়েবসাইটে
জাভাসক্রিপ্ট টিউটোরিয়াল ভিত্তিক , আমি এই শব্দটি জুড়ে এসেছি । এই টিউটোরিয়ালগুলির মতে, জাভাস্ক্রিপ্টের ভেরিয়েবলগুলি হ'ল আপনি কোনও ব্যতিক্রম না পেয়ে পরে ঘোষিত একটি চলকটি উল্লেখ করতে পারেন । তবে, আমার প্রশ্নটি কী পরিস্থিতিতে কোনও ক্লায়েন্ট-পক্ষের জাভাস্ক্রিপ্টে উত্তোলন ব্যবহার করা উপযুক্ত বা জাভাস্ক্রিপ্টে কেন আমাদের উত্তোলন ব্যবহার করা উচিত তা নিয়ে। এর সুবিধা কী কী।hoisting


1
আপনার গবেষণা ভাগ করে নেওয়া প্রত্যেককে সহায়তা করে। আপনি কী চেষ্টা করেছেন এবং কেন এটি আপনার প্রয়োজনীয়তা মেটেনি তা আমাদের বলুন। এটি প্রমাণ করে যে আপনি নিজেকে সাহায্য করার চেষ্টা করার জন্য সময় নিয়েছেন, এটি আমাদের সুস্পষ্ট উত্তরের পুনরাবৃত্তি থেকে বাঁচায় এবং সর্বোপরি এটি আপনাকে আরও নির্দিষ্ট এবং প্রাসঙ্গিক উত্তর পেতে সহায়তা করে। আরো দেখুন কিভাবে জিজ্ঞাসা করতে
মশা

6
@gnat সমস্ত গবেষণার পরে, যদি আমি এই বিষয়টি বুঝতে পারি, তবে কেন ধারণাটি সঠিকভাবে আলোচনা এবং বুঝতে আমি এই প্রশ্নটি এখানে পোস্ট করতাম
রুদ্র

2
@ রুদ্র এটি কোনও আলোচনার ফোরাম নয়। তদতিরিক্ত, আপনি প্রকৃতপক্ষে এটি গবেষণা করেছেন এমন কোনও প্রমাণ আপনি দেখাননি ।
ডোভাল

5
হ্যাঁ, তবে প্রশ্ন জিজ্ঞাসা করার এটি কোনও প্রয়োজন নয়।
রবার্ট হার্ভে

2
@ রুদ্র: মনে রাখবেন আমরা কোনও আলোচনার ফোরাম নই আমরা আসলে একটি প্রশ্নোত্তর সাইট। এখানে জিজ্ঞাসিত প্রশ্নাবলি প্রশ্নোত্তর বিন্যাসের মধ্যে যুক্তিসঙ্গত জবাবদিহি করতে হবে op
রবার্ট হার্ভে

উত্তর:


11

"উত্তোলন" শব্দটি আমি কখনও শুনিনি। আপনি যদি বেন চেরির দ্বারা উত্তোলনের এই ব্যবহারটির কথা উল্লেখ করছেন: http : //www.adeफीlygood.com/JavaScript-Scoping-and-Hoisting.html, তবে আমি যা সংগ্রহ করতে পারি সে থেকে তিনি জাভাস্ক্রিপ্ট থেকে কেবল ডগলাস ক্রকফোর্ড প্রতিধ্বনি দিচ্ছেন : ভাল অংশ , এবং বলছে যে আপনার কখনও উত্তোলন ব্যবহার করা উচিত নয় । শেষে তাঁর দৃser় বক্তব্যটি হ'ল সমস্ত ভেরিয়েবলগুলি আপনার ফাংশনের শীর্ষে ঘোষণা করা উচিত (যেমন ক্রকফোর্ড এবং জেএসলিন্ট পরামর্শ দেয়)।

বা মিঃ ক্রিস্টোফারব্রাউনের কথায়, এটি প্রতি-কথায় ব্যবহার করা কোনও বৈশিষ্ট্য নয় , তবে ব্রাউজার জাভাস্ক্রিপ্টকে কীভাবে ব্যাখ্যা করে তা সম্পর্কিত একটি স্পর্শকাতরতা।

সুতরাং, সংক্ষেপে: কখনও এবং কোথাও নেই


1
তাহলে, কেন এই ধারণাটি অন্তর্ভুক্ত করা হয়েছে এবং এই বৈশিষ্ট্যটি কী?
রুদ্র

@ রুদ্র: ডেভিড লিঙ্কিত নিবন্ধের সাবটপিক "ঘোষণা, নাম এবং হোস্টিং" মনে হচ্ছে এটি বেশ ভালভাবে আবৃত করে। কোন অংশটি অস্পষ্ট?
রবার্ট হার্ভে

@ রবার্টহারভে আমি কেবল জানতে চাই, তারা কখন এবং কখন এটি ব্যবহার করে। ডেভিড বলেছেন যে এটি কখনও এবং কোথাও ব্যবহৃত হয় না তবে কেন এটি বৈশিষ্ট্য হিসাবে দেখানো হয়েছে
রুদ্র

4
কিছু কিছু বৈশিষ্ট্যযুক্ত হওয়ার অর্থ এটি ভাল ধারণা নয়। "বৈশিষ্ট্যগুলি" পক্ষে না থাকার অনেক কারণ রয়েছে। এমনকি আপনার পরিশিষ্টগুলি কোনও আপাতভাবে কার্যকর উদ্দেশ্যে কাজ করে না, যদিও এটি সম্ভবত গুহায় মানুষের দিনগুলিতে ছিল।
রবার্ট হার্ভে

1
হোস্টিং একটি সংকলক তত্ত্ব, বিশেষত অপ্টিমাইজেশন থেকে একটি শব্দ। এটি কমপক্ষে 20 বছর ধরে হয়েছে তবে জাভাস্ক্রিপ্টের এই বিশেষত্ব দ্বারা জনপ্রিয় হয়েছে। যদি এটিকে কোনও বৈশিষ্ট্য না বলা হয় তবে এটি সম্ভবত একটি বাগ।
ডেভিড.পিএফএফএক্স

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: আমি এইভাবে উত্তর দেব। এটি ব্যবহার বা ব্যবহার না করার কোনও বৈশিষ্ট্য নয়, এটি পরিবেশ বিবেচনায় নেওয়া কেবল একটি সম্পত্তি।
scrwtp

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 = {};
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.