কেন ES6 এর পাতলা-তীর ফাংশন নেই?


16

ES6 ফ্যাট- এ্যার ফাংশন যুক্ত করেছে ( =>), যা সাধারণ ফাংশন থেকে দুটি প্রধান পার্থক্য রয়েছে:

  • সংক্ষিপ্ত বাক্য গঠন (আপনি যদি একক-অভিব্যক্তি বডি ব্যবহার করেন তবে অন্তর্ভুক্ত রিটার্ন সহ)
  • thisপার্শ্ববর্তী সুযোগ থেকে উত্তরাধিকারী

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

আমি যদি এর অন্তর্নিহিত রিটার্ন এবং ব্রিভিটির জন্য কিছু সংক্ষিপ্ত বাক্য গঠন ব্যবহার করতে চাই (এমন কিছু প্রসঙ্গে যেখানে পুরো function (..) { return ...}কিছুটা কম পঠনযোগ্য হবে), তবে আমি thisকলিং প্রসঙ্গটি উল্লেখ করতে আমার ফাংশনে ব্যবহার করতে চাই ? এটি করার কোনও উপায় নেই।

কফিস্ক্রিপ্টের উভয় ->এবং =>শৈলী ফাংশন রয়েছে এবং স্পষ্টতই ES6 সেখান থেকে =>স্টাইল ধার নিয়েছে । সুতরাং আমার প্রশ্নটি হল, কেন ES6 ->স্টাইল ধার করে নি ?


ফ্যাট-অ্যার ফাংশনগুলির মধ্যে অন্যান্য পার্থক্য রয়েছে, যেমন তারা argumentsউভয়ই বাঁধতে পারে না ।
ডেডএমজি

যদি কখনও কখনও সমস্ত আপনি আশেপাশের সুযোগ থাকে তবে আপনি thisপুরো ফাংশন ঘোষণায় সর্বদা বন্ধের সাথে আবদ্ধ হতে পারেন । এটি আপনার সম্পর্কে উদ্বিগ্ন অংশ হতে পারে না।
বেন

উত্তর:


25

তীর ফাংশন যুক্ত করার প্রস্তাব দেখুন: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax 1

এটি যা বলে তা হ'ল:

তবে আমরা কফিস্ক্রিপ্টের -> চাই না, এটি দুটি তীর নিয়ে বিভ্রান্তিকর এবং গতিশীল এই বাঁধাই একটি অফ-চালিত ফুটগান।

আপনি প্রস্তাবটির পূর্ববর্তী সংস্করণটিরও কিছু আলোচনা দেখতে পাচ্ছেন যার মধ্যে -> সিনট্যাক্সও ছিল: https://esdiscuss.org/topic/arrow-function-syntax-simplified

এটি নীচে নেমে আসে বলে মনে হচ্ছে:

  1. মোটামুটি ভিন্ন শব্দার্থক দুটি তীর সিনট্যাক্স থাকা জটিলতা এবং বিভ্রান্তি বাড়িয়ে তুলবে।
  2. গতিশীল এই ফাংশন () বাঁধাই এবং ->এটি খুব কমই কার্যকর এবং একটি পা-বন্দুক হিসাবে বিবেচিত হয়েছিল।
  3. আপনার যদি এই বাঁধাইটির সত্যিই গতিশীল প্রয়োজন হয় তবে আপনি এখনও ফাংশন () ব্যবহার করতে পারেন, একটি শর্টকাট সিনট্যাক্স থাকা খুব বেশি সহায়ক ছিল না।

1
+1 টি। বিশেষভাবে নোট করুন যে ES6 হ'ল এই বৈশিষ্ট্যগুলি প্রবর্তনের দ্বিতীয় প্রয়াস, যা মূলত ES4 এ অন্তর্ভুক্তির জন্য পরিকল্পনা করা হয়েছিল, তবে এটি স্পষ্ট হয়ে যায় যখন বড় অংশীদাররা ভাবেন যে এটি অত্যন্ত জটিল এবং পিছনে সামঞ্জস্যতা ভেঙে যাওয়ার সম্ভাবনা রয়েছে। যতটা সম্ভব সবকিছু সহজ করে রাখা অবশ্যই এই বার কমিটির গুরুত্বপূর্ণ লক্ষ্য ছিল।
জুলাই 19

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

2
@ ক্যালাম, sensকমত্য (অন্তত এই সিদ্ধান্ত গ্রহণকারীদের মধ্যে) এই স্টাইলিংটি function()একটি ভুল ছিল এবং ভাষাটির উপর মেশা। যদি তারা পারত তবে তারা শব্দার্থবিজ্ঞানের পরিবর্তিত function()হতে পারে =>তবে তারা তা করতে পারে না কারণ এটি পিছনে সামঞ্জস্যতা ভেঙে দেবে।
উইনস্টন এওয়ার্ট

2
@ উইনস্টোনওয়ার্ট ঝুলছেন, আপনি কি বলছেন যে সিদ্ধান্ত নেওয়ার লোকেরা যদি পার্শ্ববর্তী ক্ষেত্রের মতো function()উত্তরাধিকার সূত্রে বদলে যেতে পারত তবে তারা সিদ্ধান্ত নিতে পছন্দ করত ? সেক্ষেত্রে , কেবল সর্বত্র বিশ্বব্যাপী অবজেক্টটি উল্লেখ করা হবে না ? অদ্ভুত লাগছে। কোথায় শুনলে? this=>this
কলম্ব

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