غالبًا ما أرى العديد من بيانات التعبير المشروطة المختصرة في رموز الأشخاص العظماء في كل مكان. بعد قراءة بعض المقالات التي تقدم هذا الجانب ، أعتقد أن 3 طرق 2 تقول إذا كانت هذه المقالة (http://www.thomasfrank.se/3_ways_2_say_if.html) ليست سيئة. في هذه المقالة ، لخص المؤلف خصائص واستخدامات التعبيرات التقليدية لـ if ... else ... ،؟: ، &&/|| ، وتلخيصها على النحو التالي:
1. إذا ... بنية أخرى
// set r to 0 أو 1 var r = math.floor (2*math.random ()) // set a ، b and c to "small" if r == 0 al else else els on "big" // باستخدام ثلاث تقنيات مختلفة// طريقة 1: إذا كان آخر var a ؛ if (r == 0) {a = "small"} آخر {a = "big"} ؛ // الطريقة 2: المشغل الشرطي var b = r == 0؟ "صغير": "كبير" ؛ // الطريقة 3: و/أو المشغلين var c = r == 0 && "small" || "كبير"؛ // تحقق من قيم تنبيه متغيراتنا (R+""+A+""+B+""+C) ؛2. إذا ... أخرى إذا ... بنية أخرى
// قم بتعيين r إلى 0،1،2 أو 3 var r = math.floor (4*math.random ()) // set a ، b و c to "nada" ، "small" ، "big" و "ضخمة" // اعتمادًا على القيمة أو r باستخدام ثلاث تقنيات مختلفة// طريقة 1: إذا ... أخرى إذا ... var a ؛ if (r == 0) {a = "nada"} else if (r == 1) {a = "small"} if (r == 2) {a = "big"} else {a = "muge"} ؛ // الطريقة 2: المشغلات الشرطية var b = r == 0؟ "ندى": ص == 1؟ "صغير": ص == 2؟ "كبير": "ضخمة" ؛ // الطريقة 3: و/أو المشغلين var c = r == 0 && "nada" || ص == 1 && "صغير" || r == 2 && "big" || "ضخم"؛ // تحقق من قيم تنبيه متغيراتنا (R+""+A+""+B+""+C) ؛3. تنفيذ الوظيفة
// set r to 0،1،2 أو 3 var r = math.floor (4*math.random ()) // المتغير العالمي x ووظائفنا الأربعة var x = "" ؛ nada = function () {x+= "nada!"} ؛ small = function () {x+= "small!"} ؛ big = function () {x+= "big!"} ؛ ضخمة = دالة () {x+= "ضخمة!"} ؛ // استدعاء وظيفة محددة اعتمادًا على قيمة r // باستخدام ثلاث تقنيات مختلفة // الطريقة 1: إذا .. آخر إذا ... أخرى إذا ... إذا كان ذلك (r == 0) {nada ()} آخر إذا (r == 1)} // الطريقة 2: المشغلين الشرطيين r == 0؟ NADA (): r == 1؟ صغير (): ص == 2؟ Big (): ضخمة () ؛ // الطريقة 3: و/أو المشغلين r == 0 && (nada () || true) // nada () وظيفة لا تعود بالضرورة. من أجل ضمان هذا المنطق اللاحق أو || لا يتم تنفيذ الأحكام ، ويجب إرجاع القيمة الحقيقية ، وهي نفسها أدناه || r == 1 && (small () || true) || r == 2 && (big () || true) || ضخم()؛ // تحقق من قيم تنبيه متغيراتنا (r+""+x) ؛4. تنفيذ الرمز
// set r to 0،1،2 أو 3 var r = math.floor (4*math.random ()) // المتغير العالمي x var x = "" ؛ // تنفيذ رمز مختلف اعتمادًا على قيمة r // باستخدام ثلاث تقنيات مختلفة // الطريقة 1: إذا .. آخر إذا ... إذا كان ذلك (r == 0) {x+= "nada!"} آخر إذا (r == 1) {x+= "small! // الطريقة 2: المشغلين الشرطيين r == 0؟ function () {x+= "nada!"} (): r == 1؟ function () {x+= "small!"} (): r == 2؟ function () {x+= "big!"} (): function () {x+= "muge!"} () ؛ // الطريقة 3: و/أو المشغلين r == 0 && (function () {x+= "nada!"} () r == 1 && (function () {x+= "small!"} () || true) || r == 2 && (function () {x+= "big!"} () || true) || function () {x+= "ضخمة!"} () ؛ // تحقق من قيم تنبيه متغيراتنا (r+""+x) ؛في هذا المقال عبر الإنترنت ، ينصب تركيز المؤلف على ضيق الكود ، لذلك بشكل عام ، يفضل المؤلف استخدام ؟: المشغل ، ويشعر أن && || تحتاج الطرق إلى كتابة بعض الأحرف الأخرى ، مما يجعلها تبدو أكثر تعقيدًا. عند تنفيذ الوظائف ، يكون استخدام التقليدي أكثر من ذلك. في تعليقاتها ، اقترح بعض الأشخاص أن جعل الرمز الجانبي لأبسط وأقصر أكثر فعالية من تحسين بعض كفاءة التشغيل غير الواضحة ، وهو أمر صحيح أيضًا في بعض البرامج. لذلك ، قد يكون من المهم اختيار نموذج أكثر إيجازًا لمعالجة البيانات الشرطية من منظور رسمي من كفاءة تشغيل هذه العبارات نفسها ، ناهيك عن أن كفاءة التشغيل ستختلف من UA إلى UA.
في الحكم ، لا يوجد سوى شروطان ، باستخدام ... آخر أو؟: كلاهما واضح تمامًا ، في حين أن أساليب تشغيل && || هي معقدة بعض الشيء. ولكن في الواقع ، طالما أنك تفهم المبدأين الأساسيين التاليين ، سيتم حل جميع المشكلات:
أولاً ، عند استخدام المنطق و && ومنطقي أو || المشغلين ، الاتجاه من اليسار إلى اليمين. يتوقف && عندما تكون القيمة الأولى خاطئة (أو القيمة التي يمكن تحويلها إلى خطأ ، مثل NULL/غير محدد/0/""/"، إلخ) ، وتتوقف عندما تكون القيمة الأولى صحيحة (أو القيمة التي يمكن تحويلها إلى صواب) ؛ القيمة التي يتم إرجاعها بواسطة الشرط بأكمله هي قيمة الشرط الأخير الذي تم اكتشافه ، وليس بالضرورة صحيحة/خاطئة.
ثانياً ، يكون للمنطق أولوية أعلى من عامل التشغيل && من المنطق أو المشغل.
وفقًا للمبدأ الأول ، يتم حساب r == 0 و "صغير" بالترتيب من اليسار إلى اليمين. إذا كان R == 0 صحيحًا ، فسيتم اكتشاف "صغير". "Small" عبارة عن سلسلة غير فارغة ، لذلك سيتم اعتبار C "صغيرًا" ؛ إذا كانت r == 0 خاطئة ، فإن الشرط الثاني "كبير" الكشف عن المنطق أو || بدأ مباشرة. على نفس المنوال ، يجب أن تؤخذ C على أنها "كبيرة". وفقًا للمبدأ الثاني ، ليست هناك حاجة لإضافة قوسين أثناء تشغيل المتغير C في الكود أعلاه.
منذ استخدام؟: و && ، || يمكن للمشغلين أن يلعبوا دورًا في تبسيط الكود في برنامج معين ، فهو مهم للغاية في رمز مصدر المكتبة مثل jQuery. باختصار ، يحتوي هذا النوع من المشغل على تطبيقان رئيسيان: أحدهما هو تعيين أو إرجاع قيم ، والآخر هو تنفيذ التعليمات البرمجية (في الوقت الحالي ، تصنيفه).
استخدامات المهمة موجودة في كل مكان في jQuery أو المكتبات الأخرى. التطبيق الكلاسيكي هو تنفيذ وظيفة القيم الافتراضية للواجهات. يمكننا بسهولة كتابة مثل هذا الرمز ، مثل:
var myobj = function (Options) {var color = Options.Color || this.defaults.defaults ؛ var backgroundColor = OptionS.BackgroundColor || this.defaults.backgroundColor ؛} ؛ myobj.prototype.defaults = {color: "#393939" ، backgroundColor: "#222"} var myins = new myobj ({color: "#80ff80"}) ؛ console.log ("color:سواء كان ذلك يعمل؟: أو && و || ، نظرًا لأنه لا يوجد لديه وظيفة كتلة الكود الفطرية IF ... أخرى (ملفوفة برقم {}) ، يمكنهم فقط تنفيذ رمز الخط الواحد ، مثل:
(xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200)؟ تنبيه ("النجاح!"): تنبيه ("فشل!") ؛لذلك إذا كانت هناك رموز متعددة تحتاج إلى تنفيذها ، فيجب استخدام وظائف مجهولة. يحب:
(xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200)؟ function () {Alert ("Success!") ؛ var a = 100 ؛ تنبيه (أ) ؛}: تنبيه ("فشل!") ؛هناك الكثير من الاختصارات في كود المصدر 1.7.1 ، مثل السطر 2643:
// hook for boolean attributesboolhook = {get: function (elem ، name) {// محاذاة سمات منطقية مع الخصائص المقابلة// تعود إلى وجود السمة حيث لا يتم دعم بعض المنادون var attrnode ، property = jquery.prop (elem ، name) ؛ خاصية إرجاع === صحيح || property typeof! == "Boolean" && (attrnode = elem.getAttributEnode (name)) && attrnode.nodevalue! == false؟ name.tolowercase (): غير محدد ؛ } ، set: function () {...}}يبدو أنه يتعين علينا مواصلة التعلم وتلخيص.
الجملة الشرطية في JavaScript Abbreviation (الموصى بها) هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.