তাত্ক্ষণিকভাবে বলা হয় এমন একটি বেনামে জাভাস্ক্রিপ্ট ফাংশন কী?


29

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

আমার কোন বেনামে জাভাস্ক্রিপ্ট ফাংশন কল করার কথা যা তাৎক্ষণিকভাবে ডাকা হয়। আমি জানি যে আমি একে একে একে "বেনামে ফাংশন" বলতে পারি, তবে আমি এটাকে তাত্ক্ষণিকভাবে আহ্বান করা হচ্ছে এমন বিষয়ে জোর দিতে চাই।

এখানে একটি উদাহরণ:

var MyVariable = (function(data){
  return "another value"
})("some value"); 

console.log(MyVariable);
// "another value"

1
নোট আপনি প্রায়শই দেখতে পাবেন এই নির্মাণ (ভুলভাবে) একটি "স্ব-কলিং ফাংশন"
আকাশ

উত্তর:


39

জাভা স্ক্রিপ্ট বিশ্বে ইতিমধ্যে তাদের জন্য একটি পদ রয়েছে have তাদের বলা হয় অবিলম্বে প্রার্থনা ফাংশন প্রকাশ (IIFE)

এটা কি

আইআইএফই ফাংশনগুলির একটি নাম দেওয়া হয় না। পরিবর্তে, দোভাষী যখন তাদের কাছে আসবে তখন তাদের একবার সম্পাদন করা হবে:

var area = function() {
    var width = 3;
    var height = 2;
    return width * height;
}();

চূড়ান্ত প্রথম বন্ধনী কোড ব্লক বন্ধ কোঁকড়া বক্রবন্ধনী পরে ফাংশন অভিব্যক্তি অবিলম্বে কল অনুবাদক বলুন।

যদি আপনি কোনও ফাংশন ডিক্লোরেশন লিখেন তবে আপনাকে অবশ্যই ফাংশনটির চারপাশে গ্রুপিং অপারেটরগুলি বা প্রথম বন্ধনী যুক্ত করতে হবে , দোভাষীকে ফাংশনটিকে এমন একটি অভিব্যক্তি হিসাবে বিবেচনা করতে বলা উচিত যা অবিলম্বে আহ্বান করা যেতে পারে:

var area;
(function() {
    var width = 3;
    var height = 2;
    area = width * height;
}());


যখন তারা ব্যবহার করা হয়

আইআইএফইগুলি কোডের জন্য ব্যবহার করা হয় যা বারবার বলা হওয়ার পরিবর্তে কেবল একবারের মধ্যে একবার চালানো দরকার run

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

একটি নীটপিক: আপনার উদাহরণ হিসাবে ব্যবহার করে var area = ..., আপনার ফাংশনটিতে "মোড়ানো" প্রথম বন্ধনী প্রয়োজন নেই, কারণ এটি ইতিমধ্যে ডানদিকে থাকার কারণে ফাংশন প্রকাশ =। মোড়কের প্রথম বন্ধনী কেবল তখনই প্রয়োজন হয় যখন ফাংশনটি ফাংশন ডিক্লেয়ারেশন হিসাবে লেখা হয় (যেমন অগ্রণী ব্যতীত var area = ...)।
এরিক কিং

@ এরিকিং কি আমি সঠিকভাবে এটি করেছি?
লরেন্স আইলো

এটা চমৎকার হতে পারে আরো আকস্মিকভাবে কল এইসব 'প্রকাশ করার ফাংশন' পাবে
ছাঁকনি

আমি কি বলতে চাইছি তা দেখানোর জন্য আমি লাউরেন্সএইলোকে একটি সম্পাদনা যুক্ত করেছি। আশা করি এটি এখনও আপনার জন্য কাজ করে।
এরিক কিং

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