JavaScript لديه كلمة رئيسية. الغرض الأصلي من البيان مع البيان هو توفير طريقة رسم مساحة الاسم للوصول إلى الكائن خطوة بخطوة. وهذا هو ، في منطقة التعليمات البرمجية المحددة ، يتم استدعاء الكائن مباشرة من خلال اسم العقدة.
تتمثل وظيفة البيان مع في تغيير سلسلة النطاق مؤقتًا وتقليل المدخلات المتكررة.
بنية بناء الجملة هي:
مع (كائن) {// عبارات}دعونا نعطي مثالاً عملياً:
مع (document.forms []) {name.value = "Lee King" ؛ address.value = "peking" ؛ zipcode.value = "" ؛ }طريقة الكتابة التقليدية المقابلة هي:
document.forms []. name.value = "Lee King" ؛ document.forms []. address.value = "peking" ؛ document.forms []. zipcode.value = "" ؛
يمكنك أن ترى إيجاز ووضوح البيان مع البيان ، ولكن من الصعب العثور على الكمال الحقيقي في عالم الكود.
يحتاج مترجم JS إلى التحقق مما إذا كانت المتغيرات الموجودة في الكتلة مع الكائن الوارد في الكتلة ، والتي ستقلل بشكل كبير من سرعة تنفيذ البيان مع البيان وجعل من الصعب على عبارات JS تحسينها. من أجل مراعاة السرعة وحجم الكود ، يمكننا العثور على حل تسوية نسبيًا:
var form = document.forms [] ؛ form.name.value = "Lee King" ؛ form.address.value = "peking" ؛ form.zipcode.value = "" ؛
لذلك ، في تطوير الكود الفعال في المستقبل ، يجب أن نتجنب استخدام البيانات قدر الإمكان.
بعد الاختبار:
var a = 123 ؛ var b = {a: 321} ؛ with (b) {console.log (a) ؛ // 321} var a = 123 ؛ var b = {} ؛ إزالة الخاصية A في B مع (B) {console.log (a) ؛ // 123} من سلسلة النطاق لتحليلهافي JavaScript ، الوظائف هي كائنات ، وفي الواقع ، كل شيء في JavaScript هو كائنات. يوجد خاصية داخلية داخل الوظيفة التي لا يمكن الوصول إليها إلا لمحرك JavaScript ، وهو [[النطاق]]. تحتوي هذه الخاصية على مجموعة من الكائنات في النطاق عند إنشاء الوظيفة. وتسمى هذه المجموعة سلسلة النطاق.
على سبيل المثال ، الكود التالي:
وظيفة إضافة (num1 ، num2) {var sum = num1 + num2 ؛ إرجاع مجموع }عند إنشاء وظيفة ، سيتم ملء كائن عالمي في سلسلة نطاقه ، والتي تحتوي على جميع المتغيرات العالمية ، كما هو موضح في الشكل أدناه:
عند تنفيذ الوظيفة ، يتم إنشاء كائن نشط ، والذي يحتوي على جميع المتغيرات المحلية ، والمعلمات المسماة ، وهذه الوظيفة. ثم يتم دفع الكائن إلى الطرف الأمامي لسلسلة النطاق. عند تنفيذ الوظيفة ، يتم تدمير الكائن أيضًا.
يمكن ملاحظة أنه سيتم دفع المتغير العالمي إلى نهاية سلسلة النطاق بواسطة الكائن النشط ، وهذا هو السبب في أن سرعة الوصول المتغيرة العالمية بطيئة!
مع
بشكل عام ، لن تتأثر سلاسل النطاق إلا ببيانات الصيد. عند الاستخدام ، ستقوم الوظيفة بإنشاء كائن نشط جديد ودفعه إلى الواجهة الأمامية ، وهو الكائن معه. هذا يعني أن جميع المتغيرات المحلية موجودة في كائن سلسلة النطاق الثاني ، ولهذا السبب يجب عليك تجنب استخدامه.
ما ورد أعلاه هو فهم البيانات مع JavaScript المقدمة لك من قبل المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كنت تريد معرفة المزيد من المعلومات ، فيرجى الانتباه إلى موقع Wulin.com!