وحدة لا يعرف على وجه التحديد عندما تأكد من وجودها
-
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
.