وحدة لا يعرف على وجه التحديد عندما تأكد من وجودها

StackOverflow https://stackoverflow.com/questions/1628531

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أكتب وظيفة سجل سريعة للالتفاف حول console.log الأصلي إلى منع الأخطاء في وقت لاحق في التنمية (مثل البيانات console.log المنسية في التعليمات البرمجية). أنا باستخدام موتولز $defined و <لأ href = "HTTP: / /mootools.net/docs/core/Core/Core#type "يختلط =" نوفولو noreferrer "> وظائف $type للتحقق من وجود وحدة وظيفة console.log قبل استدعاء ذلك. ولكن عندما تعطيل الحرائق أحصل على الخطأ التالي في فايرفوكس.

<اقتباس فقرة>   

خطأ: لم يتم تعريف وحدة التحكم
  ملف المصدر: HTTP: //diagnostic.localhost/js/emp.custom.js
  خط: 6

EMP.log = function() {
 if (DEBUG && $defined(console) && $type(console.log) == 'function') { //line 6
  var args = Array.prototype.slice.call(arguments); //turn arguments into array
  console.log.pass(args);
 }
}

ويبدو مثل استخدام $defined يجب إزالة هذا الخطأ، لذلك لا أحد لديه أي أفكار لما قد تكون المسألة؟

وأنا باستخدام موتولز v1.2.3.

تحرير: لقد حاولت ما يلي وأنها أيضا منحهم نفس الخطأ:

if (DEBUG && $type(console) == "object" && $type(console.log) == 'function') {

if (DEBUG && $chk(console) && $type(console.log) == 'function') {
هل كانت مفيدة؟

المحلول

وحاول $defined(window.console) بدلا من ذلك. اذا مضت فايرفوكس من خلال سلسلة نطاق ولا يمكن العثور على متغير، وأنها سوف رمي خطأ، ولكن إذا كنت صريحا مع السياق حيث كنت تبحث عن متغير، وأنها سوف تعطيك undefined.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top