জাভাস্ক্রিপ্ট কেন ভেরিয়েবল উত্তোলন করে?


94

জাভাস্ক্রিপ্ট কেন ভেরিয়েবল উত্তোলন করে?

ডিজাইনাররা যখন উত্তোলন বাস্তবায়ন করার সিদ্ধান্ত নিয়েছিল তখন তাদের যুক্তি কী ছিল? অন্য কোন জনপ্রিয় ভাষা কি এটি করে?

দয়া করে ডকুমেন্টেশন এবং / অথবা রেকর্ডগুলির সম্পর্কিত লিঙ্কগুলি সরবরাহ করুন।


7
আমি সন্দেহ করি যে এই মুহূর্তে এটি historicalতিহাসিক, এবং আমি গুরুতরভাবে সন্দেহ করি এটি মূলত "বাস্তবায়নের স্বাচ্ছন্দ্য" ব্যতীত অন্য কিছু ছিল।
ডেভ নিউটন

4
সত্যিই, ব্রেন্ডন আইচকে জিজ্ঞাসা করুন, তিনি বেশ প্রতিক্রিয়াশীল বলে মনে হচ্ছে।
ফেলিক্স ক্লিং

22
এই প্রশ্নটি কীভাবে গঠনমূলক নয় ?
ফ্রান্সিস্ক

18
@ ফ্রানসিস্ক স্ট্যাক ওভারফ্লোতে স্বাগতম, যেখানে আপনি যা যা জিজ্ঞাসা করতে পারেন div
সেগুলি

20
এটি একটি সত্যই গুরুত্বপূর্ণ প্রশ্ন। এটি অনুমতি দেওয়া উচিত ছিল। এটা শিখা-টোপ ছিল না। জাভাস্ক্রিপ্ট কীভাবে কাজ করে তা বোঝার অন্যতম মূল উপাদান হুরিস্টিং এবং "কেন" একটি বৈধ প্রশ্ন যা ভাষার বেশিরভাগ পাঠ্যপুস্তকের চিকিত্সায় সম্বোধন করা হয়। এটি ঠিক নয় যে স্ট্যাক ওভারফ্লো লোকেরা এই জাতীয় প্রশ্নের উপর স্বতঃপ্রণোদিত স্টম্প।
ভালভারাইন

উত্তর:


55

স্টোয়ান স্টেফানভ যেমন "জাভাস্ক্রিপ্ট প্যাটার্নস" বইয়ে ব্যাখ্যা করেছেন, উত্তোলন জাভাস্ক্রিপ্ট ইন্টারপ্রেটার বাস্তবায়নের ফলাফল।

জেএস কোড ব্যাখ্যা দুটি পাসে সম্পাদিত। প্রথম পাসের সময়, দোভাষী দের পরিবর্তনশীল এবং ফাংশন ঘোষণার প্রক্রিয়া করে।

দ্বিতীয় পাসটি প্রকৃত কোড কার্যকরকরণের পদক্ষেপ। দোভাষী দের ফাংশন এক্সপ্রেশন এবং অঘোষিত ভেরিয়েবলগুলি প্রক্রিয়া করে।

সুতরাং, আমরা এই জাতীয় আচরণটি বর্ণনা করতে "উত্তোলন" ধারণাটি ব্যবহার করতে পারি।


15
আমি ব্যক্তিগতভাবে সত্যিই শব্দ "উত্তোলন" পছন্দ করি না। এটি মিথ্যা উপস্থাপনা দেয় যে ভেরিয়েবল এবং ফাংশন ঘোষণাগুলি বর্তমান স্কোপের শীর্ষে জাদুকরীভাবে উত্তোলন করা হয়, যখন বাস্তবে, জেএস দোভাষী আপনি বাইন্ডিংয়ের জন্য উত্স কোডটি স্ক্যান করেন এবং তারপরে কোডটি কার্যকর করেন।
যোগাযোগমাট

এখন আমি পেয়েছি কেন জেএস সবচেয়ে বেশি ভুল ভাষা বোঝে, আমি এটি কোনও টিউটোরিয়ালে দেখিনি। এবং উত্তোলন (এবং ইন্টিপ্লেটার প্রবাহ) দিয়ে বিভ্রান্ত হয়ে পড়েছেন।
স্বপ্নিল পাটোয়া

17
আহ্, এটি সত্যিকার অর্থে যুক্তি ব্যাখ্যা করে না। একজন একক-পাসের দোভাষী (যা উত্তোলনের দিকে পরিচালিত করত না) অনেক সহজ হত - তবে ডিজাইনাররা কেন দুটি পাসের জন্য বেছে নিলেন?
বার্গি

4
ভেরিয়েবলগুলি কেন বিশেষভাবে উত্তোলন করা হয় তা এটি ব্যাখ্যা করে না। ক্রিয়াকলাপগুলি বোঝায়, পরিবর্তনগুলি (বেশিরভাগ ক্ষেত্রে) না - আমি বিশ্বাস করি এটি একটি বাগ it's
জোশ এম।

জোশ এম এটি এত বিস্তৃতভাবে নির্দিষ্ট করা হয়েছে, আমি মনে করি না যে এটি একটি "বাগ" ... (আমি সম্মত হই যে এই উত্তরটি সত্যই যদিও যুক্তির উত্তর দেয় না)
জোনাস উইলস

10

জেএস স্রষ্টা ব্রেন্ডন আইচ একবার বলেছিলেন (টুইটারে) :

"ওয়ার উত্তোলন এইভাবে ফাংশন উত্তোলনের অনিয়ন্ত্রিত পরিণতি ছিল, কোনও ব্লক সুযোগ ছিল না, [এবং] জেএসকে ১৯৯৫ এর রাশ কাজ হিসাবে।"

তিনি আরও ব্যাখ্যা করেছেন যে…

"ফাংশন উত্তোলন টপ-ডাউন প্রোগ্রামটি পচানোর অনুমতি দেয়, নিখরচায় 'এসইসি' করুন, ঘোষণার আগে কল করুন; বিভিন্ন উত্তোলন পাশাপাশি ট্যাগ করা হয়েছে।"

ব্রেন্ডন আইচ

অন্য কোন জনপ্রিয় ভাষা কি এটি করে?

আমি অন্য কোনও জনপ্রিয় ভাষা জানি না যা একই পদ্ধতিতে চলক উত্তোলন করে। আমি মনে করি এমনকি অ্যাকশনস্ক্রিপ্ট - ফ্ল্যাশ বিকাশে ব্যবহৃত ECMAScript এর আরেকটি প্রয়োগ - উত্তোলন বাস্তবায়ন করেনি। এটি জাভাস্ক্রিপ্ট শিখছে এমন অন্যান্য ভাষার সাথে পরিচিত বিকাশকারীদের জন্য বিভ্রান্তি ও হতাশার কারণ হয়ে দাঁড়িয়েছে।

আপডেট: মন্তব্যগুলি থেকে পাইথনেরও একই রকম পরিবর্তনশীল উত্তোলনের আচরণ রয়েছে


4
এটি হিসাবে একটি +1 দেওয়া একমাত্র উত্তর যা প্রশ্নকে সরাসরি সম্বোধনের চেষ্টা করে।
দামন

4
এই উত্তরের জন্য আপনাকে ধন্যবাদ। আমি @ ড্যামনের সাথে পুরোপুরি একমত!
কোডিংব্রায়ান

4
: কোন পরিবর্তনশীল উত্তোলন হয়েছে আরেকটি জনপ্রিয় ভাষা পাইথন stackoverflow.com/q/63337235/2326961
Maggyero

2

এর কারণ জাভাস্ক্রিপ্ট ইন্টারপ্রেটার দুটি চক্রের কোডকে ব্যাখ্যা করে।

  1. কোড সমাপ্তি / সংকলন:
  2. কোড প্রয়োগ:

1 ম চক্রের মধ্যে সমস্ত ভেরিয়েবল এবং ফাংশন ঘোষণাগুলি এটি সঞ্চালিত ফাংশন স্কোপের শীর্ষে নিয়ে যায় This এটি কার্যকর হওয়ার আগেই এটি ফাংশনের variableObjectsজন্য তৈরি করতে সহায়তা করে execution context

২ য় ধাপে, মূল্য নির্ধারণ, কোড স্টেটমেন্ট এবং ফাংশন কলগুলি প্রত্যাশিত পদ্ধতিতে লাইনে স্থান করে।

আপনি এখানে আরও কিছু বিশদ পড়া আছে।

এটা আপনি আচরণ চারপাশে একটি ভালো ধারণা দিতে হবে let, constএবং classঘোষণা, এছাড়াও প্রাধান্য এটা পরিবর্তনশীল এবং ফাংশন মধ্যে অনুসরণ করে।


4
আপনি কি বোঝাচ্ছেন যে এটি কোনও ডিজাইনের পছন্দের ফলাফল? যদি তা হয় তবে আপনার উত্তরে এটি স্পষ্টভাবে বর্ণনা করা উচিত। তবে ব্রেন্ডন আইচের উত্তরটি পড়া, এটি একটি কাঙ্ক্ষিত বৈশিষ্ট্য হতে পারে, এটি আপনি শেষ বাক্যটি কীভাবে ব্যাখ্যা করেন তার উপর নির্ভর করে। নীচের লাইন, আমি এখনও কেন নিশ্চিত তা জানি না
বোম্বিনোশ :35
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.