تفاوت regular function و arrow function در جاوا اسکریپت

تفاوت regular function و arrow function در جاوا اسکریپت

تفاوت regular function و arrow function در جاوا اسکریپت

Difference between regular functions and arrow functions in JavaScript

توسط : admin
براساس MDN ، یک دستور تابع فلش یا پیکان دار جایگزین دستور به صورت فشرده برای یک دستور تابع معمولی است ، اگرچه بدون پیوندهای خاص خود با این کلمات کلیدی ، آرگومانها ، super یا new. عبارات عملکرد فلش به عنوان متد مناسب نیستند و آنها به عنوان سازنده نمیتوان استفاده نمود .

در توابع معمولی و توابع پیکان دار در جاوا اسکریپت 3 تفاوت ظریف وجود دارد

 

توابع Arrow فاقد مقدار this هستند

توابع Arrow مقدار خاص  this  را در خود ندارند. مقدار this در داخل یک تابع فلش همیشه از محدوده محصور به ارث میرسد .

مثال :

this.a = 100;
let arrowFunc = () => {this.a = 150};
function regFunc() {
   this.a = 200;
}
console.log(this.a)
arrowFunc()
console.log(this.a)
regFunc()
console.log(this.a)

خروجی :

100
150
150

ببینید که عملکرد Arrow مقدار this  شیء را خارج از محدوده خود تغییر داده است. تابع معمولی میتواند مقدار this   را در درون خود ایجاد کرده و تغییر دهد .

 

توابع Arrow دارای آرایه آرگومانها نیستند

در آرگومانهای JS آرایه در توابع ، یک شیء خاص است که می تواند برای بدست آوردن تمام آرگومان های ارسال شده به توابع مورد استفاده قرار گیرد. مشابه این ، توابع فلش تعهد خود را به یک موضوع آرگومان ندارند ، آنها دسترسی به آرگومان های محدوده محصور دارند .

 

توابع Arrow قابل فراخوانی هستند ولی قابل نمونه سازی نه

اگر یک تابع قابل ساخت باشد ، می توان آن را با کلمه کلید new به صورت شی جدید ایجاد کرد .  اگر یک تابع قابل فراخوانی باشد ، می توان آن را بدون new فراخوانی کرد.

 

توابع ایجاد شده از طریق declarations / expressions عملکرد قابل ساخت و قابل فراخوانی دارند.

 

توابع  Arrow (و متد) فقط قابل فراخوانی هستند. class constructors فقط قابل ساخت یا نمونه سازی هستند.

 

اگرقصد نمونه سازی یک تابع فقط قابل فراخوانی رو با کلمه کلید new داشته باشید  ، یک خطای زمان اجرا دریافت خواهید کرد.

let arrowFunc = () => {}
new arrowFunc()
This code gives the error:
arrowFunc is not a constructor

 

 

 

 

نظرات :

در عرض چند دقیقه برای ایجاد حساب

کاربری خود اقدام کنید


اکنون حساب کاربری خود را ایجاد کنید!


ایجاد حساب کاربری

با ثبت نام در نیلوتک از آخرین بروز رسانی های آموزش ها و مقالات سایت مطلع شوید