জাভাস্ক্রিপ্টে ব্লক-স্কোপযুক্ত পরিবর্তনশীল ঘোষণার জন্য 'লেট' নামটি কেন বেছে নেওয়া হয়েছিল?


306

আমি বুঝতে পারি varযে কেন এই নামটি নেওয়া হয় - এটি পরিবর্তনশীল, const- এটি একটি ধ্রুবক, তবে নামের পিছনে অর্থটি কী let, বর্তমান ব্লকে কোন স্কোপ রয়েছে? এটা হতে দাও?


7
বেসিক , 1962 সালে উদ্ভাবিত, ব্যবহৃত হয়েছিল LET। এর আগে ভাষার উদাহরণ থাকতে পারে।
ডেভিড আর ট্রিবিলে

5
বেসিক 1964 সালে নয় 1964 সালে উদ্ভাবিত হয়েছিল also এখানেও দেখুন । এর ব্যবহারটি LETম্যানুয়ালটির প্রথম খসড়ার 7 পৃষ্ঠায় বর্ণিত হয়েছে , ১৯ d৪ সালের মে মে পিডিএফ
জোসেফ কুইনসে

আরও সুনির্দিষ্টভাবে constএকটি ধ্রুবক বা অপরিবর্তনীয় (কেবলমাত্র পঠনযোগ্য) অবজেক্ট রেফারেন্স যেখানে অবজেক্টটি নিজেই এখনও পরিবর্তনযোগ্য। যেমন। পরে ঘোষণা / বরাদ্দ const foo = ['bar'], foo.push('bat')এখনও আইনি হতে পারে, কিন্তু foo = ['bar', 'bat']নয়। তবে এটি অনেক বেশি টাইপিং।
ব্যবহারকারী 982671

উত্তর:


372

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

জাভাস্ক্রিপ্টের varশুরু থেকেই ছিল, সুতরাং তাদের কেবল অন্য কীওয়ার্ডের প্রয়োজন ছিল, এবং মাত্র কয়েক ডজন অন্যান্য ভাষা থেকে ধার নেওয়া হয়েছে যা letইতিমধ্যে varযতটা সম্ভব aতিহ্যবাহী কীওয়ার্ড হিসাবে ব্যবহার letকরে , যদিও জাভাস্ক্রিপ্টে এর পরিবর্তে ব্লক স্কোপ স্থানীয় পরিবর্তনশীল তৈরি করে।


94
এবং সরকারী মোজিলা ডকুমেন্টেশন পৃষ্ঠা এই পৃষ্ঠার উদ্ধৃতি দিয়ে এই প্রশ্নের বিকাশকারী.মোজিলা.আর.ইন
শরৎচন্দ্র

9
এটি খুব সুন্দর এটিও len('var') === len('let'), যার অর্থ আপনার ঘোষণাগুলি আপনার সম্পাদকীয়ভাবে কোনওভাবেই লাইন করে চলেছে। এটি ইচ্ছাকৃত ছিল এমন প্রস্তাব দেওয়ার জন্য আমি এখনও কিছু পাইনি, তবে এটি হয় ক) দৃষ্টি আকর্ষণীয় এবং আরও পাঠযোগ্য, বা খ) যদি আপনি দু'টি মিশ্রিত করেন (তবে যাইহোক এটি খারাপ ধারণা বলে মনে হয় তবে আমি ') এটি সম্পন্ন দেখেছি)।
brichins

13
অন্য কথায়, lettraditionতিহ্যগতভাবে একটি ধ্রুবক বর্ণনা করতে ব্যবহৃত হয়েছিল, let C = the speed of lightতাই জাভাস্ক্রিপ্টটি নন-স্ট্যান্ডার্ড স্কোপিংয়ের সাথে একটি ভেরিয়েবল বর্ণনা করার জন্য একই সাথে ব্যবহার করার সিদ্ধান্ত নিয়েছে এবং একই সাথে ধ্রুবকের জন্য অন্য কীওয়ার্ডটি প্রবর্তন করে।
ফিজিয়াওরন

1
আমি অসম্মতি যে letপাসে হবে var। এছাড়াও স্কালা ব্যবহার করে না letতাই এটি কীভাবে প্রাসঙ্গিক তা আমি দেখতে পাই না।
আলুয়ান হাদাদাদ

3
@ ফিজিয়াআরন: নন স্ট্যান্ডার্ড কীভাবে? আপনি কি ঘোষণা করেছেন যে এটি সম্পূর্ণ-ক্রিয়াকলাপ-নির্বিশেষে-কী-ব্লক-এর-দ্বারা-ঘোষিত-এ-ই শুরু করার মতো?
স্যামবি

78

আমার ধারণা এটি গাণিতিক traditionতিহ্য অনুসরণ করে। গণিতে, প্রায়শই বলা হয় "যাক এক্সকে নির্বিচারে আসল নম্বর দিন" বা এর মতো।


আমি এই উত্তরটিকে বেশি পছন্দ করি কারণ সংক্ষিপ্ত এবং যথেষ্ট সম্পর্কিত কারণ আমরা সবাই বীজগণিতের মধ্য দিয়ে গিয়েছিলাম, তারপরে সম্ভবত অন্যরা কী বোঝাচ্ছে তার মতো ব্যাখ্যা অনুসরণ করা উচিত।
দুপুরে

69

যোগ করা হচ্ছে exebook প্রতিক্রিয়া , গণিত ব্যবহার শব্দ দিন এছাড়াও ভাল encapsulates এর scoping প্রভাব letযখন জাভাস্ক্রিপ্ট / ES6 ব্যবহার করা হয়। বিশেষত, নিম্নলিখিত ES6 কোডটি যখন ব্রেসগুলিতে অ্যাসাইনমেন্ট সম্পর্কে সচেতন হয় না toPrint যখন এটি এর মান প্রিন্ট করে 'Hello World',

let toPrint = 'Hello World.';
{
    let toPrint = 'Goodbye World.';
}
console.log(toPrint); // Prints 'Hello World'

আনুষ্ঠানিক গণিত হিসাবে ব্যবহার করা যাক (বিশেষত প্রমাণের লিখন) ইঙ্গিত দেয় যে চলকটির বর্তমান উদাহরণটি কেবলমাত্র সেই যৌক্তিক ধারণার সুযোগের জন্যই বিদ্যমান। নিম্নলিখিত উদাহরণে, এক্স নতুন ধারণা প্রবেশের সাথে সাথেই তাত্ক্ষণিকভাবে একটি নতুন পরিচয় অর্জন করে (সাধারণত এগুলি মূল ধারণাটি প্রমাণ করার জন্য প্রয়োজনীয় ধারণা) এবং সাব-প্রমাণের সিদ্ধান্তে অবিলম্বে পুরানো এক্সে ফিরে আসে। অবশ্যই কোডিংয়ের ক্ষেত্রে এটিকে কিছুটা বিভ্রান্তিকর বলে মনে করা হয় এবং তাই অন্যান্য ভেরিয়েবলের জন্য আলাদা একটি নাম বেছে নিয়ে সাধারণত এড়ানো হয়।

এক্স তাই এবং তাই হতে দিন ...

  প্রুফ স্টাফ

 নতুন আইডিয়া {এক্সকে অন্য কিছু হতে দিন ... কিছু প্রমাণ করুন New নতুন আইডিয়া উপসংহার করুন

 পুরানো এক্স দিয়ে মূল ধারণা প্রমাণ করুন


19
আমি মনে করি এটি সত্যিই দরকারী। গৃহীত উত্তরটি খানিকটা বিভ্রান্তিমূলক, কারণ এটি পরিবর্তিত হতে না পারার মান নিয়ে কথা বলে, যা মোটেই নেই letletসমস্ত সুযোগ সম্পর্কে।
জিঙ্গলেস্টুলা

কেবল একটি চিন্তাধারার: letকোড লেখকের মনে এইরকম কিছু চলতে আমাকে ভাবতে বাধ্য করে, "ঠিক আছে, এই মুহুর্তের জন্য let foo = bar, তবে তারপরে এটি তার মূল মূল্যে ফিরে যেতে পারে বা হতে পারে না This এটি পরিষ্কারভাবে চিত্রিত হয়েছে এর মধ্যে অবরোধ পরিধি ও Redeclaring ভেরিয়েবল জন্য উদাহরণ এই W3Schools উপস্থাপনা এর let। আবার, কিছু সাজানোর একটি বৈজ্ঞানিক উত্তর আনতে ভান নয়, কিন্তু যখন আমি ব্যবহার করতে চান মনে রাখা যে এটি আরো ভাগ একটি স্মৃতিসম্বন্ধীয় ডিভাইস হিসাবে let
তথ্যের

আমি মনে করি ধারণাগত স্বচ্ছতার জন্য এটি এখানে কিছুটা আরও নির্ভুল হওয়া উপযুক্ত worth আপনার উদাহরণ ES6 কোডটি "ধনুর্বন্ধনীগুলিতে অ্যাসাইনমেন্টটি উপেক্ষা করে না"। এটি নির্দেশিত হিসাবে অ্যাসাইনমেন্টটি একটি নতুন ভেরিয়েবলের উপরtoPrint সঞ্চালিত করে যা কেবলমাত্র ব্লকের মধ্যে বিদ্যমান এবং তারপরে ব্লকটি শেষ হয়ে গেলে কর্তব্যরূপে সেই পরিবর্তনশীলটিকে ছুঁড়ে ফেলে দেয়। এবং প্রস্থান করার পরে, আমরা বাইরের সুযোগ, যেখানে ভেতরের আছেন ফিরে toPrintআর বিদ্যমান নেই, তাই console.log(toPrint)বোঝায় বাইরের toPrint । এটি এমন কোনও কিছুকেই উপেক্ষা করা নয়, কেবলমাত্র letভেরিয়েবলগুলির পরিধি দ্বারা তাদের সীমাবদ্ধ জীবনকাল নির্ধারিত থাকে।

1
@ ফেআরডি, দুর্দান্ত পয়েন্ট। "উপেক্ষা" শব্দের ব্যবহারটি মুছে ফেলার জন্য আমি উপরেরটিতে একটি সম্পাদনা করেছি it
ইভান হোয়াইট

36

এটি varস্কোপের পার্থক্যের সাথে ঠিক কী করে । varযেহেতু ইতিমধ্যে এটি নেওয়া হয়েছে এখন এটি নাম নিতে পারে না ।

সুতরাং দেখে মনে হচ্ছে এটি পরবর্তী সেরা নামটি নিয়েছে যা একটি আকর্ষণীয় ইংরেজি ভাষার নির্মাণে শব্দার্থক রয়েছে।

let myPet = 'dog';

ইংরেজিতে এটি বলে "আমার পোষা প্রাণীর কুকুর হোক"


5
যদিও লেটের উদ্ভব ভাষা ও গাণিতিক হতে পারে তবে ঘরের নিকটস্থ রেফারেন্সটি অবশ্যই বেসিক প্রোগ্রামিং ভাষার সমস্ত সংস্করণে এলইটি বিবৃতি, ES6 এর অনেক লেখক যদি শেষ হয় তবে শিখতে শুরু করেছিলেন one 40 ইও।
প্রশস্ত_চক্ষু_পুপিলে

5
@ বিশ্বব্যাপী_যুক্ত_পুপিটাল শুধু এফওয়াইআই: বেসিক-এ বড় হওয়া ওভার -40 (যদিও ES6 এর লেখক নয়) হিসাবে, আমি যে সম্প্রদায়ের সাথে জড়িত ছিলাম তাদের মধ্যে কেউই সাধারণ অনুশীলনে এলইটি ব্যবহার করে না; পাইথন যেমন করে এখন আমরা কেবল ভেরিয়েবলগুলি অর্পণ করেছি (উদাহরণস্বরূপ A$="HELLO WORLD") জড়িত দোভাষীদের মধ্যে সিপি / এম তে রকওয়েল এআইএম 65 বেসিক, আতারি বেসিক, এমবিএএসআইসি 5, অ্যাপ্লসফট বেসিক এবং এমনকি বেসকোম, সিপি / এম তে এমএস বেসিক সংকলক অন্তর্ভুক্ত রয়েছে। ভ্যাক্স বেসিকের এলইটি রয়েছে, তবে এটির প্রয়োজন নেই, যেমনটি আমি মনে করি। মেমরিটি তখন শক্ত ছিল এবং বিবৃতিতে প্রোগ্রামের পাঠ্যের 3 বা 4 অতিরিক্ত অক্ষর বিশেষত "বড়" প্রোগ্রামগুলিতে একটি পার্থক্য তৈরি করে।
পিটার হাল হাল

@ পিটারহুল এটি আকর্ষণীয়, আমি প্রথম ডিজিটাল সিপিইউতে সংযুক্ত পেন্সিল চিহ্নিত কার্ডগুলিতে কোডিং করেছি, তারপরে বৃদ্ধের গবেষণা ল্যাবে মেনফ্রেম এবং স্কুলে একটি ডিজিটাল পিডিপি 8। লোকেরা একবারও বিবৃতি ব্যবহার না করেই এলইটি ব্যবহার করতে দেখেনি, আমি যে বই পড়েছি তা নয়। মনে মনে, আমাকে কোনও ভাল, মৌলিক সত্তা যতটা খারাপ পেয়েছে তার সাথে সাথে ফরট্রান এবং পাস্কেলে কোড দেওয়ার জন্য আমাকে উত্সাহিত করা হয়েছিল, এমনকি আমি যে সংস্করণগুলি ব্যবহার করেছি তাতে GOSUB (অর্থাৎ পুনরায় ব্যবহারযোগ্য ফাংশন) নাও পেতে পারি।
প্রশস্ত_চক্ষু_পুপিলে

আপনি একটি চলক পরিবর্তনশীল পুনরায় ঘোষণা করতে পারবেন না।
CONvid19

10

সর্বাধিক সম্ভাবনা হ'ল এটি ছিল সবচেয়ে মূio় পছন্দ। কেবল কথা বলা সহজ নয়, বরং বোঝার জন্য স্বজ্ঞাত। কেউ কেউ তর্ক করতে পারে, এর চেয়েও বেশি var

তবে আমি মনে করি এটির সাথে আরও কিছু ইতিহাস রয়েছে।

উইকিপিডিয়া থেকে :

ডানা স্কটের এলসিএফ ভাষা ল্যাম্বডা ক্যালকুলাসকে আধুনিক কার্যকরী ভাষায় রূপান্তর করার একটি পর্যায় ছিল। এই ভাষাটি লেট এক্সপ্রেশনটির প্রবর্তন করেছিল, যা সেই সময় থেকে বেশিরভাগ কার্যকরী ভাষায় হাজির।

রাজ্য-পূর্ণ আবশ্যক ভাষা যেমন ALGOL এবং পাস্কাল ব্লক কাঠামোগুলিতে ক্রিয়াকলাপের সীমাবদ্ধ সুযোগ বাস্তবায়নের জন্য মূলত একটি লেট এক্সপ্রেশন কার্যকর করে।

আমি বিশ্বাস করতে চাই যে letএটি জাভাস্ক্রিপ্টের জন্যও একটি অনুপ্রেরণা ছিল ।


এই উত্তরটি ল্যাম্বডা ক্যালকুলাসকে 'অভিব্যক্তি প্রকাশ করুন' বোঝায়, যা সম্ভবত ওপি বলেছিল is এবং এটি LETবেসিকের চেয়ে পরে দেখা
গিয়েছে

এই পুরো নিবন্ধটি মূলত 2014 সালে উইকিপিডিয়া ব্যবহারকারী থিপডডোগের এককভাবে লিখেছেন I'll আমি ন্যায়বিচার করব এবং কেবলই বলব যে এগুলি সমস্ত সংক্ষিপ্ত দৃষ্টিকোণ থেকে লেখা হয়েছে, সুতরাং উদ্ধৃত (একেবারে অবাস্তব) দাবিটি হওয়া উচিত স্কট এর কাগজটি ES6 জাভাস্ক্রিপ্টে যেভাবে প্রবর্তন করেছিল, ঠিক তেমনভাবে ল্যাম্বডা ক্যালকুলাসে লেট এক্সপ্রেশনটিকে "" পরিচয় করিয়ে দিয়েছে "বলে ব্যাখ্যা করা হয়েছে let। সম্পূর্ণ অসত্য নয়, যতদূর এটি যায় তবে কোনও বাস্তব তাত্পর্য ছাড়াই। (এবং অন্য কোন উপায়ে সম্ভাবনা যে এর স্কটের ব্যবহার "দিন" ছিল আউট ক্ষমতাসীন মধ্যে এছাড়াও বেসিক দ্বারা অনুপ্রাণিত LET।)
FeRD

1

আসুন আরও তাত্ক্ষণিক ব্লক স্তর সীমিত স্কোপ ব্যবহার করুন যেখানে ভ্যার স্কোপ বা গ্লোবাল স্কোপ সাধারণত হয়।

দেখে মনে হয় সম্ভবত এটি বেছে নেওয়া হয়েছিল কারণ বেসিক এবং আরও অনেকের মতো ভেরিয়েবল সংজ্ঞায়িত করার জন্য এটি অনেক অন্যান্য ভাষায় পাওয়া যায়।


1

আমি মনে করি জাভাস্ক্রিপ্টের স্কিমের bণীতা এখানে সুস্পষ্ট। স্কিমটি কেবল আসেনি, তবে *, চলুন *-মান, লে-সিনট্যাক্স এবং লেট-মানগুলি দেয়। (দেখুন, স্কিম প্রোগ্রামিং ভাষা, চতুর্থ সংস্করণ।)

((পছন্দটি জাভাস্ক্রিপ্টটি লিস্পি, এই ধারণাটি আরও বিশ্বাসযোগ্য করে তোলে তবে আমাদের বহন করার আগে - হোমিকোনিক নয়)))))


1

এছাড়া মত "আভিধানিক পরিবেশ টাইপ করুন অথবা বাঁধা" গড় কিছু পারা .. এটা আমাকে বিরক্ত করে যে সহজভাবে হতে "দেওয়া হবে এই হতে পারে, "। এবং আসুন রেকটি ল্যাম্বডা ক্যালকুলাসটি বোঝায় না।


আমি এর মতো উত্তর খুঁজছিলাম আমিও সন্দেহ করি এর মধ্যে "লেট" এর সাধারণ ইংরেজি অর্থ রয়েছে
মীনোহরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.