سوف (متغير أو {}) العمل crossbrowser في جافا سكريبت؟
-
18-09-2019 - |
سؤال
ال if(variable)
جملة الاختبارات في البنيات التالية إذا كانت القائمة / الصفيف ليست خالية / غير محددة، لتجنب استثناء:
if (list)
for (var k in list) {
...
if (array)
for (var i = array.length; i >= 0; i--) {
...
لكن بناء الجملة JS يسمح التعبيرات مثل
null || []
undefined || {}
لذلك يمكنني جعل التعليمات البرمجية أقصر من قبل سطر واحد وما زلت تحقق من الصفيف / الكائن:
for (var k in obj || {}) {
...
for (var i = (array || {}).length; i >= 0; i--) {
...
السؤال أساسا هو: يفعل null/undefined || []/{}
تعبير العودة الأخير في جميع المتصفحات؟
تعديل: اكتشف أن الأقواس المجعد أفضل ل for (var k in list || {})
التكرار، لأن مجموعة (أقواس مربعة) تسبب التكرار وألقيت استثناء.
المحلول
نعم، null
, undefined
, 0
, ""
, ، سوف جميع حلها false
, ، عند تعامل مع المنطقية (التي ||
المشغل يفعل)، وهكذا، سوف يستخدم جميع المتصفح الأخير. هذا السلوك آمن تماما.
نصائح أخرى
نعم
أنا أكره الحد الأقصى 15 char.
لا تنتمي إلى StackOverflow