1. || (منطقي أو) ،
حرفيا ، يتم إرجاع خطأ فقط عندما يتم إرجاع كاذب وبعد كاذب ، وإلا يتم إرجاع صحيح.
تنبيه (صحيح || false) ؛ // truealert (false || true) ؛ // trueAlert (true || true) ؛ // truealert (false || false) ؛ // خطأ شنيع
هذا أحمق يعرف ذلك ~~
ومع ذلك ، بمعنى أعمق ، هناك عالم آخر. جرب الرمز التالي
تنبيه (0 || 1) ؛ // 1
من الواضح ، نحن نعلم أن أول 0 يعني خطأ ، والثاني 1 يعني صواب ، ثم يجب أن تكون النتيجة أعلاه صحيحة ، والحقيقة تُرجع النتيجة هي 1. انظر إلى الكود التالي:
تنبيه (2 || 1) ؛ // 2
نحن نعلم أن أول 2 صحيح وآخر 1 صحيح. إذن ما هي نتيجة العودة؟ نتيجة الاختبار هي 2 ، مواصلة القراءة:
تنبيه ('a' || 1) ؛ // 'a'وبالمثل ، فإن الأول "A" صحيح ، وال 1 التالي صحيح ؛ نتيجة الاختبار هي "أ" ، وما يلي
تنبيه ('' || 1) ؛ // 1مما سبق ، نعلم أن الجبهة "خاطئة ، والظهر 1 صحيح ، ونتيجة العودة هي 1. انظر إلى ما يلي
تنبيه ('a' || 0) ؛ // 'a'الأول "A" صحيح ، و 0 التالي كاذب ، نتيجة الإرجاع هي "أ" ، تابع إلى ما يلي
تنبيه ('' || 0) ؛ // 0السابق "خطأ ، و 0 التالي هو أيضا خطأ ، ونتيجة العودة هي 0
تنبيه (0 || '') ؛ // ''
الأول 0 كاذب ، التالي "كاذب ، نتيجة الإرجاع" "
هذا يعنى
1. طالما "||" كاذب أمام "||" ، بغض النظر عما إذا "||" صحيح أو خطأ في الجزء الخلفي من "||" ، القيمة بعد "||" سيتم إرجاعها.
2. طالما "||" صحيح ، بغض النظر عما إذا "||" صحيح أو خطأ ، القيمة قبل "||" سيتم إرجاعها.
أسمي هذا مبدأ الدائرة القصيرة: إذا كنت تعرف نتيجة الأولى ، فستعرف الإخراج بعد ذلك. إذا كان الأول صحيحًا ، فاحرص على القيمة الأولى ، وإذا كان الأول كاذبًا ، فاحرص على القيمة الثانية.
6 كرات يجب أن تتذكرها: يرجى تذكر: في العمليات المنطقية JS ، 0 ، "" ، Null ، False ، غير محدد ، وسيتم الحكم على كاذبة ، والآخرون صحيحون (يبدو أنه لا يوجد إغفال ، يرجى التأكيد). يجب أن تتذكر هذا ، وإلا ستكون هناك مشاكل في التطبيق || و &&.
بالمناسبة: غالبًا ما أسألك لماذا لا أكتب إذا (attr) مباشرة إذا (attr) ؛
في الواقع ، هذه طريقة أكثر صرامة للكتابة:
يرجى اختبار الفرق بين النوع 5 و typeof !! 5. وظيفة !! هو تحويل متغير من الأنواع الأخرى إلى نوع منطقي.
2. && (اللوجستية و)
حرفيًا ، لن يتم إرجاع True إلا عندما يكون كل من قبل وبعد صحيحين ، وإلا سيتم إرجاع خطأ.
ALERT (true && false) ؛ // falsealert (true && true) ؛ // truealert (false && false) ؛ // falsealert (false && true) ؛ // خطأ شنيع
ثم ، استنادًا إلى التجربة أعلاه ، دعونا نلقي نظرة على الموقف الذي لا تكون فيه أرقام "&&" مجرد أنواع منطقية.
تنبيه ('' && 1) ؛ // ''العقدة هي العودة "،" && "قبل" كاذبة ، و 1 صحيح بعد ذلك.
تنبيه ('' && 0) ؛ // ''العقدة هي العودة "،" && "قبل" كاذبة ، و 0 هو أيضا خطأ.
تنبيه ('A' && 1) ؛ // 1تُرجع العقدة 1 ، "&&" قبل "A" A صحيحة ، والما يلي 1 صحيح أيضًا.
تنبيه ('a' && 0) ؛ // 0تُرجع العقدة 0 و "&&" قبل "A صحيحة ، والأليفة التالية 0 خاطئة.
تنبيه ('a' && '') ؛ // ''العقدة هي العودة "،" && "قبل" A صحيحة ، و "بعد" خاطئة.
تنبيه (0 && 'a') ؛ // 0
تعود العقدة 0 و "&&" قبل "0 خاطئة ، و" A "صحيحة.
ALERT (0 && '') ؛ // 0
تُرجع العقدة 0 و "&&" قبل "0 خاطئة ، و After" خاطئة أيضًا.
مبدأ الدائرة القصيرة
1. طالما أن "&&" خاطئة ، بغض النظر عما إذا كانت "&&" صحيحة أو خاطئة ، سيتم إرجاع القيمة قبل "&&" ؛
2. طالما أن "&&" صحيح ، بغض النظر عما إذا كانت "&&" صحيحة أو خاطئة ، فإن النتيجة ستعيد القيمة بعد "&&" ؛
3. التطبيق في التطوير
الرموز الثلاثة التالية متكافئة:
a = a || "defaultValue" ؛ if (! a) {a = "defaultValue" ؛ } if (a == null || a == "" || a == undefined) {a = "defaultValue" ؛ }أي واحد تريد استخدامه؟
2. مثل var yahoo = yahoo || {} ؛ يستخدم على نطاق واسع جدا. أليس الطريق للحصول على القيمة الأولية أنيقة؟ من إذا. . . . آخر ... أفضل بكثير ، أفضل من؟ : إنه أفضل بكثير.
3. رد الاتصال و Callback ()
في عمليات الاسترجاعات ، غالبًا ما يتم كتابة هذا بهذه الطريقة ، وهو أكثر صرامة. أولاً ، حدد ما إذا كان رد الاتصال موجودًا. إذا كانت موجودة ، قم بتنفيذها. الغرض من الكتابة بهذه الطريقة هو منع الإبلاغ عن الأخطاء.
إذا كتبت رد الاتصال () مباشرة ؛ سيقوم الرمز بالإبلاغ عن خطأ عند عدم وجود رد الاتصال.
4. أمثلة شاملة
يتم عرض المتطلبات في الشكل:
اكتب وصف صورة هنا
افترض أن معدل النمو محدد على النحو التالي:
يتم عرض سهم واحد عندما يكون معدل النمو 5 ؛
يتم عرض سهم 2 عندما يكون معدل النمو 10 ؛
يتم عرض 3 الأسهم عندما يكون معدل النمو 12 ؛
يتم عرض 4 الأسهم عندما يكون معدل النمو 15 ؛
جميع الآخرين يعرضون 0 الأسهم.
كيف تنفذها مع الكود؟
قليلا إذا ، آخر:
var add_level = 0 ؛ if (add_step == 5) {add_level = 1 ؛ } آخر إذا (add_step == 10) {add_level = 2 ؛ } آخر إذا (add_step == 12) {add_level = 3 ؛ } آخر إذا (add_step == 15) {add_level = 4 ؛ } آخر {add_level = 0 ؛ }مفتاح أفضل قليلاً:
var add_level = 0 ؛ التبديل (add_step) {الحالة 5: add_level = 1 ؛ استراحة؛ الحالة 10: add_level = 2 ؛ استراحة؛ الحالة 12: add_level = 3 ؛ استراحة؛ الحالة 15: add_level = 4 ؛ استراحة؛ الافتراضي: add_level = 0 ؛ استراحة؛}إذا تم تغيير المتطلبات إلى:
معدل النمو> 12 و 4 سهام يتم عرضها ؛
يتم عرض 3 الأسهم عندما يكون معدل النمو> 10 ؛
سرعة النمو هي> 5 و 2 سهام.
سرعة النمو> 0 يعرض سهم واحد ؛
سرعة النمو هي <= 0 و 0 السهام.
ثم سيكون من المزعج للغاية تنفيذها باستخدام Switch.
هل فكرت يومًا في تنفيذها في سطر واحد؟
حسنًا ، دعونا نلقي نظرة على التعبير القوي لـ JS:
var add_level = (add_step == 5 && 1) || (add_step == 10 && 2) || (add_step == 12 && 3) || (add_step == 15 && 4) || 0 ؛
أقوى وأفضل:
var add_level = {'5': 1 ، '10 ': 2 ، '12': 3 ، '15 ': 4} [add_step] || 0 ؛الشرط الثاني:
var add_level = (add_step> 12 && 4) || (add_step> 10 && 3) || (add_step> 5 && 2) || (add_step> 0 && 1) || 0 ؛
ما سبق هو تحليل شامل لـ "&&" و "||" تم تقديم المشغلين في JavaScript لك من قبل المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!