এসি 6-তে ফাংশন প্যারামিটার তালিকার ভিতরে কোঁকড়া ধনুর্বন্ধকগুলি কী করে?


120

আমি যে কোডবেজে কাজ করছি তার মধ্যে দেখতে দেখতে এমন ফাংশনগুলি দেখতে থাকি:

const func = ({ param1, param2 }) => {
  //do stuff
}

এই ঠিক কি করছে? গুগলে এটি খুঁজে পেতে আমার বেশ কষ্ট হচ্ছে, কারণ এটিকে কী বলা হয় বা গুগল অনুসন্ধানে কীভাবে এটি বর্ণনা করা যায় তা সম্পর্কে আমি নিশ্চিত নই।


উত্তর:


116

এটি ধ্বংসাত্মক , তবে পরামিতিগুলির মধ্যে রয়েছে। ধ্বংস না করে সমতুল্য হ'ল:

const func = o => {
    var param1 = o.param1;
    var param2 = o.param2;
    //do stuff
}

11
কেবলমাত্র আমি সঠিকভাবে বুঝতে পেরেছি তা নিশ্চিত করার জন্য, মূলত এর অর্থ এই যে এই বৈশিষ্ট্যযুক্ত কোনও বস্তু ফাংশনে প্রবেশ করবে এবং তারপরে ফাংশনের মধ্যেই কেবলমাত্র নাম ব্যবহার করে বৈশিষ্ট্যগুলি স্বয়ংক্রিয়ভাবে অ্যাক্সেস করা যেতে পারে?
নাথন

7
@Nathan হ্যাঁ, বিশেষভাবে দেখতে অবজেক্ট ডেসট্রাকচারিং বিভাগে । তবে নোট করুন যে ভেরিয়েবলগুলিতে আপডেটগুলি মূল বস্তুর বৈশিষ্ট্যগুলি আপডেট করবে না - এটি মূল মানের একটি রেফারেন্স তৈরি করার মতো নয়।
জেমস থর্প


11

এটি সম্পত্তি হিসাবে একটি বস্তুর পাস করছে।

এটি মূলত শর্টহ্যান্ডের জন্য

let param1 = someObject.param1
let param2 = someObject.param2

পরামিতি ছাড়াই এই কৌশলটি ব্যবহারের অন্য উপায়টি হ'ল নিম্নলিখিতটি বিবেচনা করা যাক তবে এক সেকেন্ডের জন্য বিবেচনা করা যাক যে কোনওরকমের মধ্যে সেই বৈশিষ্ট্য রয়েছে contain

let {param1, param2} = someObject;

3

এটি একটি অবজেক্ট ডেস্ট্রাকচারিং অ্যাসাইনমেন্ট। আমার মতো, আপনি এটি অবাক করে দেখতে পেয়েছেন কারণ ES6 অবজেক্টের ডেস্ট্রাকচারিং সিনট্যাক্সটি দেখতে দেখতে লাগে তবে অবজেক্ট আক্ষরিক নির্মাণের মতো আচরণ করে না।

এটি আপনাকে ছড়িয়ে দেওয়া খুব ক্ষুদ্র রূপকে সমর্থন করে পাশাপাশি ক্ষেত্র এবং ডিফল্ট যুক্তিগুলির নামকরণ করে:

মূলত, এটি হ'ল {পুরাতনকি নাম: নিউকিমনাম = ডিফল্ট মূল্য, ...}} ':' কী / মান বিভাজক নয়; '=' হয়।

এই ভাষা ডিজাইনের সিদ্ধান্তের কিছু ফলস্বরূপ হ'ল আপনাকে পছন্দ মতো জিনিসগুলি করতে হতে পারে

; ({A, B} = some_object);

অতিরিক্ত পেরেনগুলি বাম কোঁকড়া ধনুর্বন্ধনীগুলি ব্লক হিসাবে পার্সিং প্রতিরোধ করে এবং শীর্ষস্থানীয় সেমিকোলন পূর্ববর্তী লাইনের কোনও ক্রিয়াকলাপের জন্য পেরেনগুলি পার্স হতে বাধা দেয়।

আরও তথ্যের জন্য দেখুন: https://developer.mozilla.org/en-US/docs/Web/ জাভা স্ক্রিপ্ট / রেফারেন্স / অপারেটর / ডিস্ট্রাকচার_অ্যাসাইনমেন্ট

সাবধান, অবজেক্ট ডেস্ট্রাকচারিং অ্যাসাইনমেন্টের সময় মূল ত্রুটিগুলি ছুঁড়ে না ফেলে; আপনি কেবল "অপরিজ্ঞাত" মানগুলি দিয়ে শেষ করেছেন, এটি কোনও মূল ত্রুটি বা অন্য কোনও ত্রুটি যা নিঃশব্দে 'অপরিজ্ঞাত' হিসাবে প্রচারিত হয়েছিল whether

> var {rsienstr: foo, q: bar} = {p:1, q:undefined};
undefined
> foo
undefined
> bar
undefined
> 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.