بعد البحث ، هناك فرق كبير بين الاثنين.
اختبار نظام التشغيل: Ubuntu
متصفح اختبار: Chrome
حالة الاختبار 1
console.log (أ)
المرجع: أ لم يتم تعريفه
حالة الاختبار 2
var a
console.log (أ)
لم يتم الإبلاغ عن أي أخطاء ، لكن الإخراج غير محدد
حالة الاختبار 2
var b = {} ؛
console.log (BA)
لم يتم الإبلاغ عن أي أخطاء ، لكن الإخراج غير محدد
حالة الاختبار 3
الوظيفة C () {
}
var d = new c () ؛
console.log (DA)
لم يتم الإبلاغ عن أي أخطاء ، ولكن غير محددة
حول typeof
يتم إرجاع جميع الكائنات المذكورة أعلاه للاختبار باستخدام typeof.
حول أو التشغيل ||
var d = a || 3
الإبلاغ عن خطأ غير محدد
var a ؛
var d = a || 3
النتيجة: D == 3
var c = 22 || 44
ج == 22
var c = false || 33
ج == 33
إذا (x) {
}
الإبلاغ عن خطأ
var x
إذا (x) {
}
إذا لم ينفذ
تلخيص:
هناك نوعان من غير محددة في JS ، على الرغم من أن العائد عبارة عن سلسلة ("غير محددة")
بعد التعريف ، ولكن بدون أي عملية أو خاصية غير محددة لكائن ما ، فإنه ينتمي إلى غير محدد يمكن استخدامه للتشغيل ويمكن استخدامه كعملية منطقية.
النوع الثاني من المتغير غير محدد تمامًا وليس له خلفية (XA ، على الرغم من أن X ليس له سمة ، ولكنه يعطي X Face) ، ولا يمكن استخدامه كنوع خطأ ما لم يتم استخدام وظيفة typeof.
لا تُرجع OR في JS قيمة Bool ، ولكنها تقوم بإرجاع القيمة التي تم حسابها بواسطة JS على الحالة الأخيرة على كلا الجانبين. 2 == 1 A ||
var a ؛
لقد وجدت هذا القاموس وترجمته
يمكن ترجمة غير محددة إلى: غير واضح ، أي أنني لا أعرف ماذا أفعل
ولم يتم تعريفها يمكن ترجمتها إلى غير محددة