انتقل إلى المحتوى

٢.٣ الدوال السهمية

تمهيد

التمرين 1: أنشئ دالة عادية تجمع عددين.

function addTwoNumbers(num1, num2){
  return num1 + num2
}

console.log(addTwoNumbers(2, 4));

النتيجة هي: 6

التمرين 2: أعد تنفيذ التمرين 1، لكن اجعل addTwoNumbers دالة مجهولة.

var addTwoNumbers = function(num1, num2){
  return num1 + num2;
}

console.log(addTwoNumbers(2, 4));

النتيجة هي: 6

التمرين 3: حوّل التمرين 1 ؟

(function(num1, num2){
  return num1 + num2;
})(2, 4);

النتيجة هي:

التمرين 4: أعد تنفيذ التمرين 3إلى IIFE، واعرض النتيجة في وحدة التحكم.

var result = (function(num1, num2){
  return num1 + num2;
})(2,4);

console.log(result);

النتيجة هي: 6

الدالة السهمية

التمرين 5: اقرأ الشيفرة التالية وقارنها مع التمرين 2 .

var addTwoNumbers = (num1, num2) => num1 + num2;

console.log(addTwoNumbers(2, 4));

النتيجة هي: 6

كل من التمرين 2 و التمرين 5 ينتج النتيجة نفسها، لكن الشيفرة في التمرين 5 أقصر وأوضح.

الدوال السهمية

تتيح الدوال السهمية صياغة مختصرة للدوال المجهولة، ولها أيضًا اختلافات سلوكية سنناقشها لاحقًا، مثل this. صياغتها هي: (param1, param2, param3) => // Function Statements

التمرين 6: أنشئ دالة سهمية تجمع أربعة أعداد.

var addNumbers = (num1, num2, num3, num4) => num1 + num2 + num3 + num4;

console.log(addNumbers(2, 4, 5, 6));

النتيجة هي: 17

التمرين 7: أنشئ دالة سهمية تضيف 123 إلى سلسلة نصية مُعطاة.

var add123 = str => str + 123;

console.log(add123("Hi"));

النتيجة هي: Hi123

لاحظ أن يمكن حذف القوسين إذا كان للدالة معامل بسيط واحد فقط، كما في التمرين 6.

التمرين 8: أنشئ دالة سهمية بلا معاملات تُرجع 1.

var returns1 = () => 1;

console.log(returns1());

النتيجة هي: 1

التمرين 9: أنشئ دالة سهمية تُرجع مربّع عدد.

var squareOfNum = num => num * num;

console.log(squareOfNum(5));
console.log(squareOfNum(9));

النتيجة كما يلي:

25
81

التمرين 10: أنشئ دالة سهمية تُرجع false إذا لم يُقدَّم اسم المستخدم أو كان فارغًا أو undefined؛ وإلا فتُرجع true.

var isUsernameValid = username => username ? true : false;

console.log(isUsernameValid("Ali"));
console.log(isUsernameValid(""));
console.log(isUsernameValid(null));
console.log(isUsernameValid("Ola"));
console.log(isUsernameValid(undefined));

النتيجة كما يلي:

true
false
false
true
false

التمرين 11: أعد تنفيذ التمرين 9 باستخدام عبارة if العادية. تلميح: ضع عبارة if داخل قوسين معقوفين {}.

var isUsernameValid = username => {
      if(username){
        return true;
      }else{
        return false;
      }
}

console.log(isUsernameValid("Ali"));
console.log(isUsernameValid(""));
console.log(isUsernameValid(null));
console.log(isUsernameValid("Ola"));
console.log(isUsernameValid(undefined));

ستظهر النتيجة نفسها.

ملاحظة

عند كتابة عدة تعليمات داخل دالة سهمية، ضعها بين قوسين معقوفين، وأضف return إذا أردت إرجاع قيمة.

التمرين 12: فكّر في طريقة أقصر لكتابة التمرين 9 .

var isUsernameValid = username => !!username;

console.log(isUsernameValid("Ali"));
console.log(isUsernameValid(""));
console.log(isUsernameValid(null));
console.log(isUsernameValid("Ola"));
console.log(isUsernameValid(undefined));

ستظهر النتيجة نفسها.

!!value

!value ينفي القيمة: الصادقة تصبح false، والكاذبة تصبح true.

!!value ينفي النتيجة مرة ثانية، فيحوّل القيمة إلى تمثيلها المنطقي: true للقيمة الصادقة وfalse للكاذبة.

نتعلّم تدريجيًا كتابة شيفرة موجزة وواضحة.

التمرين 13: أنشئ دالة سهمية تُرجع طول القيمة إذا كانت سلسلة نصية؛ وإلا فتُرجع false.

var stringLength = value => typeof value === "string" ? value.length : false;

console.log(stringLength("Nawras"));
console.log(stringLength(5));
console.log(stringLength("5"));
console.log(stringLength(true));
console.log(stringLength("Jad"));
console.log(stringLength(undefined));
console.log(stringLength(null));

النتيجة كما يلي:

6
false
1
false
3
false
false

التمرين 14: أنشئ دالة سهمية تفحص بروتوكول الاتصال. إذا كان "https"، فصنّفه آمنًا؛ وإلا فصنّفه غير آمن.

var isSecure =  protocol =>  protocol === "https" ? "secure" : "insecure";

console.log(isSecure("http"));
console.log(isSecure("https"));

النتيجة كما يلي:

insecure
secure

التمرين 15: اجعل الدالة التمرين 14 تعبيرًا مستدعى فورًا (IIFE).

var isSecure =  (protocol =>  protocol === "https" ? "secure" : "insecure")("http");

console.log(isSecure);

النتيجة هي: insecure

التمرين 16: أنشئ دالة سهمية تعرض الأعداد من عدد مُعطى إلى آخر في وحدة التحكم.

var counting = (firstNum, secondNum) => {
  for(var i=firstNum; i<= secondNum; i++){
    console.log(i);
  }
}

counting(5, 9);

النتيجة كما يلي:

5
6
7
8
9

التمرين 17: حوّل التمرين 16 ؟

((firstNum, secondNum) => {
  for(var i=firstNum; i<= secondNum; i++){
    console.log(i);
  }
})(5, 9);

ستظهر النتيجة نفسها.