জাভাস্ক্রিপ্টে "=>" (সমান এবং এর চেয়ে বড় থেকে তৈরি একটি তীর) এর অর্থ কী?


444

আমি জানি যে >=অপারেটরের অর্থ এর চেয়ে বেশি বা সমান, তবে আমি =>কিছু উত্স কোডে দেখেছি । সেই অপারেটরের অর্থ কী?

কোডটি এখানে:

promiseTargetFile(fpParams, aSkipPrompt, relatedURI).then(aDialogAccepted => {
    if (!aDialogAccepted)
        return;

    saveAsType = fpParams.saveAsType;
    file = fpParams.file;

    continueSave();
}).then(null, Components.utils.reportError);

5
তীর ফাংশন সম্পর্কে এই লিঙ্কটি দেখুন ।
মিস্তালিস

উত্তর:


546

এটা কি

এটি একটি তীর ফাংশন। তীর ফাংশনগুলি হ'ল একটি সংক্ষিপ্ত বাক্য গঠন যা ECMAscript 6 দ্বারা প্রবর্তিত, এটি আপনি যেমন ফাংশন এক্সপ্রেশন ব্যবহার করবেন তেমনভাবে ব্যবহার করা যেতে পারে। অন্য কথায়, আপনি প্রায়শই এগুলির মত প্রকাশের জায়গায় ব্যবহার করতে পারেন function (foo) {...}। তবে তাদের কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে। উদাহরণস্বরূপ, তারা তাদের নিজস্ব মানগুলি আবদ্ধ করে না this(আলোচনার জন্য নীচে দেখুন)।

তীর ফাংশনগুলি ECMAscript 6 স্পেসিফিকেশনের অংশ। এগুলি এখনও সমস্ত ব্রাউজারগুলিতে সমর্থিত নয় তবে 2018 এর হিসাবে নোড বনাম 4.0+ এবং বেশিরভাগ আধুনিক ব্রাউজারে সেগুলি আংশিক বা সম্পূর্ণ সমর্থিত (আমি নীচে সমর্থনকারী ব্রাউজারগুলির একটি আংশিক তালিকা অন্তর্ভুক্ত করেছি)।

আপনি তীর ফাংশনগুলির বিষয়ে মজিলা ডকুমেন্টেশনে আরও পড়তে পারেন

মজিলা ডকুমেন্টেশন থেকে:

একটি তীর ফাংশন অভিব্যক্তি (এছাড়াও চর্বি তীর ফাংশন হিসাবে পরিচিত) তুলনায় খাটো সিনট্যাক্স হয়েছে ফাংশন এক্সপ্রেশন এবং আভিধানিক binds thisমান (বাঁধে না নিজস্ব this, arguments, super, অথবা new.target)। তীর ফাংশন সবসময় বেনামে থাকে। এই ফাংশন এক্সপ্রেশনটি নন-মেথড ফাংশনের জন্য সবচেয়ে উপযুক্ত এবং এগুলি কনস্ট্রাক্টর হিসাবে ব্যবহার করা যায় না।

thisতীরের কার্যাদি কীভাবে কাজ করে সে সম্পর্কে একটি নোট

একটি তীর ফাংশনটির সর্বাধিক সহজ বৈশিষ্ট্যগুলির একটি উপরের পাঠ্যটিতে সমাহিত করা হয়েছে:

একটি তীর ফাংশন ... বর্ণনাকৃতভাবে thisমানটিকে বেঁধে দেয় (এর নিজস্বকে আবদ্ধ করে না this...)

এর সহজ শর্তে এর অর্থ কী তা হ'ল তীর ফাংশনটি thisতার প্রসঙ্গ থেকে মান ধরে রাখে এবং এর নিজস্ব নেই this। একটি ঐতিহ্যগত ফাংশন পারে নিজস্ব বাঁধে this, মান কিভাবে এটি সংজ্ঞায়িত করা হয় এবং বলা হয় উপর নির্ভর করে। এটি অন্য ফাংশনের অভ্যন্তরে একটি ফাংশন থেকে self = this;অ্যাক্সেস করতে বা চালনার জন্য প্রচুর জিমন্যাস্টিক ইত্যাদির প্রয়োজন হতে thisপারে। এই বিষয়ে আরও তথ্যের জন্য, মজিলা ডকুমেন্টেশনে ব্যাখ্যা এবং উদাহরণগুলি দেখুন

উদাহরণ কোড

উদাহরণ (ডক্স থেকেও):

var a = [
  "We're up all night 'til the sun",
  "We're up all night to get some",
  "We're up all night for good fun",
  "We're up all night to get lucky"
];

// These two assignments are equivalent:

// Old-school:
var a2 = a.map(function(s){ return s.length });

// ECMAscript 6 using arrow functions
var a3 = a.map( s => s.length );

// both a2 and a3 will be equal to [31, 30, 31, 31]

সামঞ্জস্যতা নোট

আপনি নোডে তীর ফাংশন ব্যবহার করতে পারেন তবে ব্রাউজার সমর্থনটি দাগযুক্ত।

এই কার্যকারিতাটির জন্য ব্রাউজার সমর্থন কিছুটা উন্নত হয়েছে, তবে এটি বেশিরভাগ ব্রাউজার-ভিত্তিক ব্যবহারের জন্য যথেষ্ট পরিমাণে বিস্তৃত নয়। 12 ডিসেম্বর, 2017 হিসাবে এটি বর্তমান সংস্করণগুলিতে সমর্থিত:

  • ক্রোম (বনাম 45+)
  • ফায়ারফক্স (বনাম 22+)
  • প্রান্ত (v। 12+)
  • অপেরা (বনাম 32+)
  • অ্যান্ড্রয়েড ব্রাউজার (বনাম 47+)
  • অপেরা মোবাইল (বনাম ৩৩++)
  • অ্যান্ড্রয়েডের জন্য ক্রোম (বনাম 47+)
  • অ্যান্ড্রয়েডের জন্য ফায়ারফক্স (বনাম 44+)
  • সাফারি (বনাম 10+)
  • iOS সাফারি (বনাম 10.2+)
  • স্যামসুং ইন্টারনেট (বনাম 5+)
  • বাইদু ব্রাউজার (বনাম 7.12+)

এতে সমর্থিত নয়:

  • IE (v। 11 এর মাধ্যমে)
  • অপেরা মিনি (বনাম 8.0 এর মাধ্যমে)
  • ব্ল্যাকবেরি ব্রাউজার (ভি। 10 এর মাধ্যমে)
  • আইই মোবাইল (ভি। ১১ এর মাধ্যমে)
  • অ্যান্ড্রয়েডের জন্য ইউসি ব্রাউজার (v। 11.4 এর মাধ্যমে)
  • কিউকিউ (ভি। 1.2 মাধ্যমে)

আপনি CanIUse.com এ আরও সম্পর্কিত (এবং আরও বর্তমান) তথ্য পেতে পারেন (কোনও অনুমোদিত নয়)।


3
টাইপস্ক্রিপ্ট এটি সমর্থন করে বলে মনে হচ্ছে।
এমটাইসন

1
দেখে মনে হচ্ছে এটি ল্যাম্বডা এক্সপ্রেশন, হ্যাঁ?
এডিডেম

1
ব্রাউজারের সামঞ্জস্যের শর্তে উল্লেখ করতে চেয়েছি আমি ইএস 6 / ইএস 7 তীর ফাংশন এবং অন্যান্য বৈশিষ্ট্যগুলি আইই 11 এর সাথে সামঞ্জস্যপূর্ণ নয় তবে আমি ইবে 6 তে ইএস 5 স্থানান্তর করতে বাবেলের সাথে গুলপ বা ওয়েবপ্যাক ব্যবহার করি যাতে এটি আই 11 এ কাজ করে। সুতরাং আপনার যদি আই 1111 সমর্থন প্রয়োজন এবং আপনি বাবেল সেট আপ করতে আপত্তি করেন না তবে এটির জন্য যান।
এমবোকিল

76

এটি তীর ফাংশন হিসাবে পরিচিত, ECMAScript 2015 স্পেসের অংশ ...

var foo = ['a', 'ab', 'abc'];

var bar = foo.map(f => f.length);

console.log(bar); // 1,2,3

পূর্বের চেয়ে সংক্ষিপ্ত বাক্য গঠন:

// < ES6:
var foo = ['a', 'ab', 'abc'];

var bar = foo.map(function(f) {
  return f.length;
});
console.log(bar); // 1,2,3

ডেমো

অন্য দুর্দান্ত জিনিসটি লেসিকাল this ... সাধারণত, আপনি এমন কিছু করতে চান:

function Foo() {
  this.name = name;
  this.count = 0;
  this.startCounting();
}

Foo.prototype.startCounting = function() {
  var self = this;
  setInterval(function() {
    // this is the Window, not Foo {}, as you might expect
    console.log(this); // [object Window]
    // that's why we reassign this to self before setInterval()
    console.log(self.count);
    self.count++;
  }, 1000)
}

new Foo();

তবে এটি এটির মতো তীর দিয়ে আবারও লেখা যায়:

function Foo() {
  this.name = name;
  this.count = 0;
  this.startCounting();
}

Foo.prototype.startCounting = function() {
  setInterval(() => {
    console.log(this); // [object Object]
    console.log(this.count); // 1, 2, 3
    this.count++;
  }, 1000)
}

new Foo();

ডেমো

সিন্ট্যাক্সে এমডিএন
মোর

আরও জন্য, তীর ফাংশন কখন ব্যবহার করতে হবে তার জন্য এখানে একটি সুন্দর উত্তর answer


এটা ব্যবহার করা গণদেবতা আপডেট করার জন্য ভাল হবে esfiddle.net যেমন es6fiddle.net আর কর্মক্ষম
Wavesailor

25

এটি হবে ECMAScript 6 এ চালু করা "তীর ফাংশন এক্সপ্রেশন"।

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions

Historicalতিহাসিক উদ্দেশ্যে (যদি উইকি পৃষ্ঠাটি পরে পরিবর্তিত হয়), তা হ'ল:

একটি তীর ফাংশন এক্সপ্রেশন ফাংশন এক্সপ্রেশন তুলনায় একটি সংক্ষিপ্ত সিনট্যাক্স আছে এবং বর্ণিত এই মান আবদ্ধ। তীর ফাংশন সবসময় বেনামে থাকে।


1
যথেষ্ট তথ্য সহ মাইন্ড তাই বেশিরভাগ পাঠকদের নিচে নামাতে হবে না?
djechlin

2
আমি যুক্ত উইকিটি খুব সংক্ষিপ্তভাবে এটি কী তা বর্ণনা করে: "একটি তীর ফাংশন এক্সপ্রেশনটি ফাংশন এক্সপ্রেশনগুলির তুলনায় একটি সংক্ষিপ্ত বাক্য গঠন করে এবং এই মানটিকে বর্ণিতভাবে আবদ্ধ করে দেয়। তীর ফাংশনগুলি সর্বদা বেনামে থাকে" "
কাইল ফ্যালকোনার

1
এখানে একটি উদ্ধৃতি হিসাবে যুক্ত করা আপনার উত্তরটিকে সত্যই সহায়তা করবে।
হ্যাঙ্কি প্যাঙ্কি

22

এগুলি হ'ল অ্যার ফাংশন

ফ্যাট অ্যারো ফাংশন হিসাবেও পরিচিত । এগুলি ফাংশন এক্সপ্রেশন লেখার জন্য একটি পরিষ্কার এবং বিবেচ্য উপায়, যেমন function() {}

তীর কার্যাবলী প্রয়োজন অপসারণ করতে পারেন function, returnএবং {}যখন ফাংশন সংজ্ঞায়িত। এগুলি জাভা বা পাইথনের ল্যাম্বদা এক্সপ্রেশনগুলির অনুরূপ ওয়ান-লাইনার।

কোন পরামিতি সঙ্গে উদাহরণ

const queue = ['Dave', 'Sarah', 'Sharon'];
const nextCustomer = () => queue[0];

console.log(nextCustomer()); // 'Dave'

যদি একই তীর ফাংশনের মধ্যে একাধিক বিবৃতি দেওয়া দরকার হয় তবে আপনাকে উদাহরণস্বরূপ queue[0]কার্লি বন্ধনীগুলিতে মোড়ানো দরকার {}। এক্ষেত্রে রিটার্নের স্টেটমেন্ট বাদ দেওয়া যাবে না।

1 পরামিতি সহ উদাহরণ

const queue = ['Dave', 'Sarah', 'Sharon'];
const addCustomer = name => {
  queue.push(name);
};

addCustomer('Toby');

console.log(queue); // ['Dave', 'Sarah', 'Sharon', 'Toby']

আপনি {}উপরের থেকে বাদ দিতে পারেন ।

যখন কোনও একক প্যারামিটার ()থাকে তখন প্যারামিটারের চারপাশে বন্ধনীগুলি বাদ দেওয়া যায়।

একাধিক পরামিতি সহ উদাহরণ

const addNumbers = (x, y) => x + y

console.log(addNumbers(1, 5)); // 6

একটি দরকারী উদাহরণ

const fruits = [
    {name: 'Apple', price: 2},
    {name: 'Bananna', price: 3},
    {name: 'Pear', price: 1}
];

যদি আমরা প্রতিটি ফলের দাম একক অ্যারে পেতে চাইতাম, ES5 তে আমরা করতে পারি:

fruits.map(function(fruit) {
    return fruit.price;
}); // [2, 3, 1]

নতুন তীর ফাংশন সহ ES6 এ, আমরা এটি আরও সংক্ষিপ্ত করতে পারি:

fruits.map(fruit => fruit.price); // [2, 3, 1]

অ্যার ফাংশন সম্পর্কিত অতিরিক্ত তথ্য এখানে পাওয়া যাবে

ব্রাউজার সামঞ্জস্য

  • আইই: এখনও সমর্থিত নয়
  • প্রান্ত: 12+ (সমস্ত সংস্করণ)
  • ফায়ারফক্স: 22+
  • ক্রোম: 45+
  • সাফারি: 10+
  • আইওএস সাফারি: 10.2+
  • অ্যান্ড্রয়েড ব্রাউজার: 56+

অতিরিক্ত আপ টু ডেট তথ্য এখানে ব্রাউজারের সামঞ্জস্যে পাওয়া যাবে


21

ম্যাপ ব্যবহার না করে ল্যাম্বডা কী করতে পারে তার অন্য একটি উদাহরণ যোগ করতে:

a = 10
b = 2

var mixed = (a,b) => a * b; 
// OR
var mixed = (a,b) => { (any logic); return a * b };

console.log(mixed(a,b)) 
// 20

13

অন্যরা যেমন বলেছে, এটি ফাংশন তৈরির জন্য একটি নতুন সিনট্যাক্স।

তবে, এই ধরণের ক্রিয়াকলাপগুলি সাধারণের থেকে পৃথক:

  • তারা thisমান আবদ্ধ । যেমন অনুমান দ্বারা ব্যাখ্যা করা হয়েছে ,

    একটি ArrowFunction জন্য স্থানীয় বাইন্ডিং সংজ্ঞায়িত না arguments, super, this, অথবা new.target। যেকোনো উল্লেখ করতে arguments, super, this, অথবা new.targetএকটি মধ্যে ArrowFunction একটি আভিধানিক পরিক্ষেপ পরিবেশে একটি বাঁধাই করার সমাধান নয়। সাধারণত এটি তাত্ক্ষণিকভাবে বন্ধ করা ফাংশনের ফাংশন পরিবেশ হবে।

    যদিও একটি তীর ফাংশনটিতে উল্লেখ থাকতে পারে superতবে পদক্ষেপ 4-এ তৈরি ফাংশন অবজেক্টটি মেকমেথোদ সম্পাদন করে কোনও পদ্ধতিতে তৈরি হয় না । একটি অ্যারো ফাংশন যা রেফারেন্সগুলি super সর্বদা একটি অ- অ্যারো ফাংশন এর মধ্যে থাকে এবং প্রয়োগের জন্য প্রয়োজনীয় রাষ্ট্রটি এ্যারোফানশনের ফাংশন অবজেক্ট দ্বারা ক্যাপচার করা সুযোগেরsuper মাধ্যমে অ্যাক্সেসযোগ্য ।

  • তারা নির্মাতারা।

    তার মানে তাদের কোনও [[নির্মাণ]] অভ্যন্তরীণ পদ্ধতি নেই এবং সুতরাং এটি তাত্ক্ষণিকভাবে স্থাপন করা যায় না, যেমন

    var f = a => a;
    f(123);  // 123
    new f(); // TypeError: f is not a constructor

8

আমি পড়েছি, এই প্রতীক Arrow Functionsমধ্যেES6

এই

var a2 = a.map(function(s){ return s.length });

ব্যবহার করে Arrow Functionলেখা যেতে পারে

var a3 = a.map( s => s.length );

MDN ডক্স


6

তীরচিহ্নের সাথে সাধারণ সিআরইউডি উদাহরণ যুক্ত করা হচ্ছে

 //Arrow Function
 var customers   = [
   {
     name: 'Dave',
     contact:'9192631770'
   },
   {
     name: 'Sarah',
     contact:'9192631770'
   },
   {
     name: 'Akhil',
     contact:'9928462656' 
   }],

// No Param READ
 getFirstCustomer = () => { 
   console.log(this);
   return customers[0];
 };
  console.log("First Customer "+JSON.stringify(getFirstCustomer())); // 'Dave' 

   //1 Param SEARCH
  getNthCustomer = index=>{
    if( index>customers.length)
    {
     return  "No such thing";
   }
   else{
       return customers[index];
     } 
  };
  console.log("Nth Customer is " +JSON.stringify(getNthCustomer(1))); 

   //2params ADD
  addCustomer = (name, contact)=> customers.push({
     'name': name,
     'contact':contact
    });
  addCustomer('Hitesh','8888813275');
  console.log("Added Customer "+JSON.stringify(customers)); 

  //2 param UPDATE
  updateCustomerName = (index, newName)=>{customers[index].name= newName};
  updateCustomerName(customers.length-1,"HiteshSahu");
  console.log("Updated Customer "+JSON.stringify(customers));

  //1 param DELETE
  removeCustomer = (customerToRemove) => customers.pop(customerToRemove);
  removeCustomer(getFirstCustomer());
  console.log("Removed Customer "+JSON.stringify(customers)); 

4

অন্যান্য উত্তর নিয়ে অসন্তুষ্ট। 2019/3/13 হিসাবে শীর্ষে ভোট দেওয়া উত্তর সত্যই ভুল।

এর =>অর্থ সংক্ষিপ্ত সংস্করণটি হ'ল এটি একটি ফাংশন এবং বর্তমানকে আবদ্ধ করার জন্য একটি শর্টকাটthis

const foo = a => a * 2;

কার্যকরভাবে জন্য একটি শর্টকাট

const foo = function(a) { return a * 2; }.bind(this);

সংক্ষিপ্ত হয়ে যাওয়া সমস্ত জিনিস আপনি দেখতে পাবেন। আমরা না হলেই ভাল হত function, কিংবা returnকিংবা .bind(this)এমনকি ধনুর্বন্ধনী বা প্রথম বন্ধনী

তীর ফাংশনটির সামান্য দীর্ঘ উদাহরণ হতে পারে

const foo = (width, height) => {
  const area = width * height;
  return area;
};

দেখানো হচ্ছে যে আমরা যদি ফাংশনে একাধিক যুক্তি চাই তবে আমাদের প্রথম বন্ধনী প্রয়োজন এবং আমরা যদি একটি একক অভিব্যক্তি চেয়ে বেশি লিখতে চাই তবে আমাদের ধনুর্বন্ধনী এবং একটি সুস্পষ্ট প্রয়োজন return

.bindঅংশটি বোঝা গুরুত্বপূর্ণ এবং এটি একটি বড় বিষয়। এটি thisজাভাস্ক্রিপ্ট মানে কি সঙ্গে করতে হবে ।

সমস্ত ফাংশনের একটি অন্তর্ভুক্ত প্যারামিটার বলা হয় thisthisকোনও ফাংশন কল করার সময় কীভাবে সেট করা হয় সেই ফাংশনটি কীভাবে ডাকা হয় তার উপর নির্ভর করে।

গ্রহণ করা

function foo() { console.log(this); }

যদি আপনি সাধারণত এটি কল

function foo() { console.log(this); }
foo();

this গ্লোবাল অবজেক্ট হবে।

আপনি যদি কড়া মোডে থাকেন

`use strict`;
function foo() { console.log(this); }
foo();

// or

function foo() {
   `use strict`;
   console.log(this);
 }
foo();

এটা হবে undefined

আপনি thisসরাসরি ব্যবহার করে callবা সেট করতে পারেনapply

function foo(msg) { console.log(msg, this); }

const obj1 = {abc: 123}
const obj2 = {def: 456}

foo.call(obj1, 'hello');  // prints Hello {abc: 123}
foo.apply(obj2, ['hi']);  // prints Hi {def: 456}

আপনি thisডট অপারেটর ব্যবহার করেও স্পষ্টভাবে সেট করতে পারেন.

function foo(msg) { console.log(msg, this); }
const obj = {
   abc: 123,
   bar: foo,
}
obj.bar('Hola');  // prints Hola {abc:123, bar: f}

আপনি যখন কোনও ফাংশন কলব্যাক বা শ্রোতা হিসাবে ব্যবহার করতে চান তখন একটি সমস্যা উপস্থিত হয়। আপনি ক্লাস করেন এবং কলব্যাক হিসাবে কোনও ফাংশন বরাদ্দ করতে চান যা শ্রেণীর কোনও উদাহরণ অ্যাক্সেস করে।

class ShowName {
  constructor(name, elem) {
    this.name = name;
    elem.addEventListener('click', function() {
       console.log(this.name);  // won't work
    }); 
  }
}

উপরের কোডটি কাজ করবে না কারণ যখন উপাদান ইভেন্টটি ফায়ার করে এবং ফাংশনটি কল করে তখন thisমানটি শ্রেণীর উদাহরণ হতে পারে না।

এই সমস্যা সমাধানের একটি সাধারণ উপায় হ'ল ব্যবহার করা .bind

class ShowName {
  constructor(name, elem) {
    this.name = name;
    elem.addEventListener('click', function() {
       console.log(this.name); 
    }.bind(this); // <=========== ADDED! ===========
  }
}

কারণ তীর সিনট্যাক্স একইভাবে আমরা লিখতে পারি

class ShowName {
  constructor(name, elem) {
    this.name = name;
    elem.addEventListener('click',() => {
       console.log(this.name); 
    });
  }
}

bindকার্যকরভাবে একটি নতুন ফাংশন তোলে । যদি bindঅস্তিত্ব না থাকে তবে আপনি মূলত নিজের মতো করে তৈরি করতে পারেন

function bind(funcitonToBind, valueToUseForThis) {
  return function(...args) {
    functionToBind.call(valueToUseForThis, ...args);
  };
}

পুরানো জাভাস্ক্রিপ্টে স্প্রেড অপারেটর ছাড়া এটি হবে

function bind(funcitonToBind, valueToUseForThis) {
  return function() {
    functionToBind.apply(valueToUseForThis, arguments);
  };
}

কোডটি বোঝার জন্য ক্লোজারগুলির বোঝাপড়া প্রয়োজন তবে সংক্ষিপ্ত সংস্করণটি bindএকটি নতুন ফাংশন তৈরি করে যা সর্বদা thisএটির সাথে আবদ্ধ মানটির সাথে মূল ফাংশনটিকে কল করে । তীর ফাংশন একই কাজ করে কারণ তারা একটি শর্টকাটbind(this)


2

অন্য সমস্ত উত্তর ইতিমধ্যে বলেছে, এটি ES2015 তীর ফাংশন সিনট্যাক্সের অংশ। আরো নির্দিষ্টভাবে, এটি একটি অপারেটর নয়, এটি একটি punctuator যে টোকেন শরীর থেকে পরামিতি আলাদা: ArrowFunction : ArrowParameters => ConciseBody। যেমন (params) => { /* body */ }


1

ES6 তীর ফাংশন:

জাভাস্ক্রিপ্টে =>তীর ফাংশন প্রকাশের প্রতীক। একটি তীর ফাংশন এক্সপ্রেশনটির নিজস্ব thisবাইন্ডিং নেই এবং তাই কনস্ট্রাক্টর ফাংশন হিসাবে ব্যবহার করা যায় না। উদাহরণ স্বরূপ:

var words = 'hi from outside object';

let obj = {
  words: 'hi from inside object',
  talk1: () => {console.log(this.words)},
  talk2: function () {console.log(this.words)}
}

obj.talk1();  // doesn't have its own this binding, this === window
obj.talk2();  // does have its own this binding, this is obj

তীর ফাংশন ব্যবহারের বিধি:

  • তাহলে সেখানে ঠিক একটি আর্গুমেন্ট আপনি যুক্তির প্রথম বন্ধনী বর্জন করতে পারেন।
  • আপনি যদি কোনও অভিব্যক্তি ফিরে পান এবং একই লাইনে এটি করেন তবে আপনি {}এবং returnবিবৃতিটি বাদ দিতে পারেন

উদাহরণ স্বরূপ:

let times2 = val => val * 2;  
// It is on the same line and returns an expression therefore the {} are ommited and the expression returns implictly
// there also is only one argument, therefore the parentheses around the argument are omitted

console.log(times2(3));


1

চিহ্ন (=>) দ্বারা চিহ্নিত অ্যারো ফাংশন আপনাকে বেনামে ফাংশন এবং পদ্ধতি তৈরি করতে সহায়তা করে। এটি আরও খাটো সিনট্যাক্সের দিকে নিয়ে যায়। উদাহরণস্বরূপ, নীচে একটি সাধারণ "অ্যাড" ফাংশন রয়েছে যা দুটি সংখ্যার সংযোজন প্রদান করে।

function Add(num1 , num2 ){
return num1 + num2;
}

উপরের ফাংশনটি নীচে দেখানো হিসাবে "তীর" সিনট্যাক্স ব্যবহার করে সংক্ষিপ্ত হয়ে যায়।

এখানে চিত্র বর্ণনা লিখুন

উপরের চিত্রের মতো উপরে কোডের দুটি অংশ রয়েছে: -

ইনপুট: - এই বিভাগটি বেনামে ফাংশনটির জন্য ইনপুট পরামিতিগুলি নির্দিষ্ট করে।

যুক্তি: - এই বিভাগটি "=>" চিহ্নের পরে আসে। এই বিভাগে আসল ফাংশনের যুক্তি রয়েছে।

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

আপনি যদি উপরের বাক্যটি বিশ্বাস করেন, তবে আমাকে আশ্বাস দিন এটি একটি মিথকথা। আপনি যদি এক মুহুর্তের জন্য মনে করেন যে তীর চিহ্ন ব্যবহার করে এক লাইনে তৈরি ক্রিপ্টিক ফাংশনগুলির চেয়ে নামের সাথে একটি সঠিকভাবে লিখিত ফাংশন অনেক বেশি পঠনযোগ্য।

তীর ফাংশনের প্রধান ব্যবহার হ'ল কলারদের প্রসঙ্গে কোডটি চলছে কিনা তা নিশ্চিত করা।

নীচের কোডটি দেখুন যেখানে একটি বৈশ্বিক পরিবর্তনশীল "প্রসঙ্গ" সংজ্ঞায়িত হয়েছে, এই গ্লোবাল ভেরিয়েবলটি "সামোথারমেথোদ" ফাংশনের অভ্যন্তরে অ্যাক্সেস করা হয় যা অন্য পদ্ধতি থেকে "সোমমেথোদ" বলা হয়।

এই "সোমমেথোদ" এর স্থানীয় "প্রসঙ্গ" ভেরিয়েবল রয়েছে। এখন "সামোথার ম্যাথড" "" সোমমারথোড "থেকে ডেকে আনা হয়েছে বলে আমরা আশা করি এটি" স্থানীয় প্রসঙ্গ "প্রদর্শন করবে, তবে এটি" বৈশ্বিক প্রসঙ্গ "প্রদর্শন করে lays

var context = global context”;

function SomeOtherMethod(){
alert(this.context);
}

function SomeMethod(){
this.context = local context”;
SomeOtherMethod();
}

var instance = new SomeMethod();

তবে যদি অ্যারো ফাংশনটি ব্যবহার করে কলটি প্রতিস্থাপন করা হয় তবে এটি "স্থানীয় প্রসঙ্গ" প্রদর্শিত হবে।

var context = "global context";

    function SomeMethod(){
        this.context = "local context";
        SomeOtherMethod = () => {
            alert(this.context);
        }
        SomeOtherMethod();
    }
    var instance = new SomeMethod();

আমি আপনাকে এই লিঙ্কটি পড়তে উত্সাহিত করব ( জাভাস্ক্রিপ্টে তীর ফাংশন ) যা জাভাস্ক্রিপ্ট প্রসঙ্গে সমস্ত পরিস্থিতিতে ব্যাখ্যা করে এবং কোন পরিস্থিতিতে কলার প্রসঙ্গে শ্রদ্ধা জানানো হয় না।

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


0

অন্যরা যেমন বলেছে, নিয়মিত (traditionalতিহ্যবাহী) ফাংশনগুলি ফাংশন thisনামক বস্তু থেকে ব্যবহার করে (যেমন ক্লিক করা একটি বোতাম) । পরিবর্তে, তীর ফাংশনগুলি ফাংশনটি thisসংজ্ঞায়িত করে এমন বস্তু থেকে ব্যবহার করে।

দুটি প্রায় অভিন্ন ফাংশন বিবেচনা করুন:

regular = function() {
  ' Identical Part Here;
}


arrow = () => {
  ' Identical Part Here;
}

নীচের স্নিপেট thisপ্রতিটি ফাংশনের জন্য প্রতিনিধিত্ব করে তার মধ্যে মৌলিক পার্থক্য প্রদর্শন করে । নিয়মিত ফাংশন আউটপুট [object HTMLButtonElement]যেহেতু তীর ফাংশন আউটপুট [object Window]

<html>
 <button id="btn1">Regular: `this` comes from "this button"</button>
 <br><br>
 <button id="btn2">Arrow: `this` comes from object that defines the function</button>
 <p id="res"/>

 <script>
  regular = function() {
    document.getElementById("res").innerHTML = this;
  }

  arrow = () => {
    document.getElementById("res").innerHTML = this;
  }

  document.getElementById("btn1").addEventListener("click", regular);
  document.getElementById("btn2").addEventListener("click", arrow);
 </script>
</html>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.