Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ฟังก์ชั่นปกติกับฟังก์ชั่น Arrow ใน JavaScript?


ฟังก์ชันปกติเทียบกับฟังก์ชันลูกศร

ฟังก์ชันลูกศร ใช้ในการเขียนโค้ดอย่างกระชับ ทั้งสองฟังก์ชั่น ปกติ และ ลูกศร ทำงานในลักษณะที่คล้ายกัน แต่มีความแตกต่างบางอย่างระหว่างพวกเขา มาพูดถึงความแตกต่างเหล่านั้นโดยสังเขป

ไวยากรณ์ของฟังก์ชันลูกศร

let x = (params) => {
// code
};

ไวยากรณ์ของฟังก์ชันปกติ

let x = function functionname(params){
// code
};

การใช้คีย์เวิร์ด "นี้"

ไม่สามารถใช้คีย์เวิร์ด "นี้" ในฟังก์ชันลูกศรได้ แต่ในฟังก์ชันปกติจะสามารถใช้งานได้โดยไม่มีการรบกวน

ตัวอย่าง

ในตัวอย่างต่อไปนี้ ทั้ง ปกติ (สี่เหลี่ยมผืนผ้า) และ ลูกศร (สี่เหลี่ยม) ถูกใช้ภายในวัตถุ "จำนวน " ซึ่งประกอบด้วยคุณสมบัติ len(length) และ bre(breadth) เป้าหมายของเราคือการหาพื้นที่ของ สี่เหลี่ยมจัตุรัส (len*len) โดยใช้ ฟังก์ชันลูกศร และ พื้นที่สี่เหลี่ยมผืนผ้า (len*bre) โดยใช้ ปกติ การทำงาน. แต่เนื่องจาก "นี่ " คำหลักไม่ทำงานในฟังก์ชันลูกศร ค่าของพื้นที่ของ สี่เหลี่ยม ถูกส่งกลับเป็น "NaN " ในขณะที่ใช้ ปกติ ฟังก์ชัน เราได้พื้นที่ที่แน่นอนของ สี่เหลี่ยมผืนผ้า ดังแสดงในผลลัพธ์

<html>
<body>
<script>
   var num = {
      len: 12,
      bre: 13,
      square:() => {
         document.write(this.len * this.len);
      },
      rectangle(){
         document.write(this.len * this.bre);
      }
   };
   num.square();
   document.write("</br>");
   num.rectangle();
</script>
</body>
</html>

ผลลัพธ์

NaN
156


การใช้คำสำคัญ 'ใหม่'

ฟังก์ชัน ลูกศร ไม่ใช่ "สร้างได้ " แต่ "โทรได้ " ดังนั้นคำหลัก "ใหม่ " ใช้งานไม่ได้ในขณะที่ฟังก์ชันปกติ มีทั้ง "โทรได้ " และ "สร้างได้ " ดังนั้น "ใหม่ " คีย์เวิร์ดทำงานที่นี่

ตัวอย่าง

ในตัวอย่างต่อไปนี้ การใช้ "ใหม่ " อาร์กิวเมนต์บางคำส่งผ่านไปยังทั้ง ปกติ และ ลูกศร การทำงาน. แต่เนื่องจาก ฟังก์ชันลูกศร ไม่ใช่ "สร้างได้ " เราจะได้รับข้อผิดพลาดในขณะที่เราจะได้รับผลลัพธ์ที่ถูกต้องไปยัง ฟังก์ชันปกติ .

<html>
<body>
<script>
   var word = function(){
      document.write(JSON.stringify(arguments)); 
       ///  executes '{"0":"Tutorix","1":"Tutorialspoint"}' as output
   };
   new word("Tutorix","Tutorialspoint");  
   var newword = ()=> {
      document.write(JSON.stringify(arguments)); 
      //executes 'newword is not a constructor' as output
   };
   new newword("Tutorix","Tutorialspoint");
</script>
</body>
</html>
. ใหม่