اذهب إلى المحتوى

السؤال

نشر

image.png.bdcd4df30dd93bc44df63b149fa04ddf.pngisNaN(); vS isNaN  هلى هى دالة ام قيمة منطقية

 

 

isNaN(); vS isNaN  هلى هى دالة ام قيمة منطقية

على هى دالة ام قيمة منطقية؟

Function or Bolean?

typeof(isNaN());
'boolean'
typeof(isNaN);
'function'

 

Recommended Posts

  • 0
نشر

عند كتابة

typeof(isNaN)

فأنت تسأل عن نوع الدالة نفسها دون استدعائها ولذلك ستكون النتيجة "function" لأن isNaN هي دالة مدمجة في JavaScript.

أما عندما تكتب :

typeof(isNaN())

فأنت هنا تقوم بتنفيذ الدالة أولا ثم تطلب نوع القيمة التي أعادتها.

هنا مثلا :

isNaN()

تعيد قيمة منطقية و هيا true.

لذلك :

typeof(isNaN())

تعطي "boolean" وهو نوع القيمة التي اعادتها الدالة.

بالتوفيق إن شاء الله.

  • 0
نشر

لاحظ الإختلاف كبير جدا . isNaN  هي دالة كأى دالة أخرى تقوم بتعريفها والدالة يتم تعريفها من خلال الإسم .

فلو أنشأت دالة ووضعت إسمها بدالة typeof ستعيد لك function :

function test() {
    return true;
}

typeof(test) // function

أما وضع الأقواس بعد إسم الدالة فهنا تعني أن يتم تنفيذ الدالة . أى أن الدالة تم تنفيذها وإعادة القيمة بداخل الدالة . وبما أن isNaN تعيد قيمة منطقية true أو false فهنا تجد أنه تم طباعة boolean.

إذا isNaN هي دالة أما isNaN() فهنا تم تنفيذ الدالة ويتم إعادة قيمة منطقية boolean أى أن boolean هو نوع القيمة التي تم إعادتها من تنفيذ الدالة.

  • 0
نشر

الأمر يعتمد على كيفية كتابتك لها. الكلمة isNaN بمفردها هي دالة (Function)، بينما isNaN() مع الأقواس تمثل استدعاءً لهذه الدالة، والنتيجة التي تعود منها هي قيمة منطقية (Boolean).

ولاحظ أن عندما تكتب isNaN() بدون أي argument، تمرر جافاسكريبت  undefined تلقائياً، أي كأنك كتبت isNaN(undefined). وبما أن undefined ليس رقماً، فالدالة ترجع true.

وهذا ليس خاصاً بـ isNaN فقط بل ينطبق على أي دالة في JavaScript

// typeof الدالة نفسها → دائماً 'function'
typeof parseInt      // 'function'
typeof Math.sqrt     // 'function'
typeof console.log   // 'function'

// typeof ناتج الدالة → يعتمد على ما ترجعه الدالة
typeof parseInt("5")   // 'number'  ← لأن parseInt ترجع رقماً
typeof Math.sqrt(9)    // 'number'  ← لأن sqrt ترجع رقماً
typeof console.log()   // 'undefined' ← لأن console.log لا ترجع شيئاً

 

  • 0
نشر

وعليكم السلام ورحمة الله تعالى وبركاته،

عندما تكتب typeof isNaN فأنت تشير إلى الدالة نفسها دون تنفيذها فتحصل على 'function' أما عندما تكتب typeof isNaN() فأنت تنفذ الدالة أولا وتقيس نوع ما أعادته فتحصل على 'boolean' لأن isNaN() بدون معامل تمرر JavaScript تلقائيا undefined إليها وبما أن undefined ليس رقما فتعيد true.

ونفس المبدأ ينطبق على أي دالة ف typeof parseInt تعطي 'function' بينما typeof parseInt("5") تعطي 'number'، وكذلك typeof Math.sqrt تعطي 'function' بينما typeof Math.sqrt(9) تعطي 'number'، والفرق دائما بين الإشارة إلى الدالة واستدعائها.

typeof isNaN         // 'function'
typeof isNaN()       // 'boolean'

isNaN()              // true
isNaN(undefined)     // true

typeof parseInt      // 'function'
typeof parseInt("5") // 'number'

typeof Math.sqrt     // 'function'
typeof Math.sqrt(9)  // 'number'

 

  • 0
نشر

isNaN دالة، بينما isNaN() هو استدعاء لها ينتج عنه قيمة منطقية Boolean، بمعنى عندما تكتب الاسم بدون أقواس، فإنك تشير إلى الكائن البرمجي للدالة دون تشغيلها، لذلك عند فحص نوعها باستخدام typeof(isNaN)، يخبرك المتصفح بأن نوعها هو دالة function.

وكل شيء في لغة جافاسكريبت هو كائن تقريباً.

الأقواس () تعني قم بتشغيل الدالة الآن وأعد النتيجة، لذا عند تشغيل دالة isNaN، وظيفتها هي فحص القيمة وإرجاع قيمة منطقية true أو false، عند استدعائها فارغة كالتالي isNaN()، تقوم الدالة تلقائياً بفحص القيمة undefined لعدم تمرير أي مدخلات، وبما أن undefined ليس رقماً، فإن الدالة ترجع القيمة المنطقية true.

لذا عند استخدام typeof(isNaN())، أنت لا تفحص الدالة نفسها، بل تفحص النتيجة التي أعادتها الدالة وهي القيمة true وبما أن true هي قيمة منطقية، فإن الناتج يكون boolean.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...