هناك مشكلة في النطاق والوظائف العالمية للتحدي.
وكيل المستخدم هو: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
.
يُرجى وصف كيفية إعادة إظهار هذه المشكلة ، وتضمين روابط إلى لقطات الشاشة إن أمكن.
رمز بلدي:
// Declare your variable here
var myGlobal = 10;
function fun1() {
// Assign 5 to oopsGlobal Here
}
// Only change code above this line
function fun2() {
var output = "";
if (typeof myGlobal != "undefined") {
output += "myGlobal: " + myGlobal;
}
if (typeof oopsGlobal != "undefined") {
output += " oopsGlobal: " + oopsGlobal;
}
console.log(output);
}
نحتاج إلى بدء استخدام es6 let
و const
. إعلان المتغير var
احتمال حدوث خطأ.
سيتم تغطية ميزات ES6 بما في ذلك let
و const
بالتفصيل في مواضيع المناهج الجديدة التي يتم تطويرها حاليًا (انظر هنا ). ستتطرق هذه التحديات أيضًا إلى المشكلات التي يمكن أن تنتج عن تحديد النطاق / الرفع عند استخدام var
.
في الوقت الحالي ، يعتبر هذا التحدي بمثابة مقدمة لتحديد النطاق وبعض المشكلات التي يجب البحث عنها عند استخدام var
، ولا يزال يحتوي على معلومات مفيدة حيث من المحتمل أن يصادف المخيمون تعليمات برمجية من مصادر أخرى (أقدم) تقوم بذلك. استخدم var
(مثل الشفرة القديمة ، إلخ) ، ولذا فهي مقدمة مفيدة للقضايا التي تمت مناقشتها.
قد تكون هناك حجة لإزالة الخط
يجب أن تعلن دائمًا عن متغيراتك باستخدام var.
أو تغييره مع بعض التحذير فيما يتعلق بالتعرف على let
و const
لاحقًا ، لكنني أعتقد أن هذا التحدي جيد بالنسبة للمقدمة الأولى للموضوع.
أفكار cc @ FreeCodeCamp / issue-moderators؟
تضمين التغريدة
وقت استخدام وعدم استخدام var
ليس دائمًا متروكًا للمطور الفردي ولكن في معظم الأحيان يعتمد ذلك على الفريق.
على الرغم من أنني لم أجد وقتًا لا يمكن فيه استبدال var
بـ let
أو const
لقد تحدثت إلى مهندس في OpenTable ، والذي قام مؤخرًا بإعادة تشكيل قاعدة الرموز الخاصة بهم لاستخدامها ES2015 ، وقد ذكر أن هناك حالة واحدة كان فيها let
أو const
هو سبب الخلل و var
كان لا بد من استخدامه لكنه لم يتذكر التفاصيل الدقيقة لـ لماذا كان ذلك.
لا أعتقد أن var
يجب أن يُثبط عزيمته. من الأفضل شرح الطريقة التي يعمل بها var
والسماح للمطور بالاختيار بمجرد المضي قدمًا في رحلتهم نحو التنوير.
هناك أيضًا بعض الغرابة مع let
و const
التي إذا لم تكن على دراية بها يمكنك من خلال بعض الحلقات (انظر: المنطقة الميتة المؤقتة ). لا يؤدي هذا إلى استبعاد استخدام let
و const
، على الرغم من أن هذا أمر مزعج. هذا يعني فقط أن التملص من شيء ما لا يقل أهمية عن معرفة الشيء.
شكرا لك على المدخلات. كلاهما نقاط جيدة. أعتقد أن هذا كله يعتمد على الرأي. ومع ذلك ، سأقف إلى جانب بياني ، وسأذهب إلى حد الوعظ لاستخدام البيانات غير القابلة للتغيير ، واستخدام مكتبات مثل immutable.js أو mori لمنع حدوث طفرات غير متوقعة في البيانات. ✌️
التعليق الأكثر فائدة
تضمين التغريدة
وقت استخدام وعدم استخدام
var
ليس دائمًا متروكًا للمطور الفردي ولكن في معظم الأحيان يعتمد ذلك على الفريق.على الرغم من أنني لم أجد وقتًا لا يمكن فيه استبدال
var
بـlet
أوconst
لقد تحدثت إلى مهندس في OpenTable ، والذي قام مؤخرًا بإعادة تشكيل قاعدة الرموز الخاصة بهم لاستخدامها ES2015 ، وقد ذكر أن هناك حالة واحدة كان فيهاlet
أوconst
هو سبب الخلل وvar
كان لا بد من استخدامه لكنه لم يتذكر التفاصيل الدقيقة لـ لماذا كان ذلك.لا أعتقد أن
var
يجب أن يُثبط عزيمته. من الأفضل شرح الطريقة التي يعمل بهاvar
والسماح للمطور بالاختيار بمجرد المضي قدمًا في رحلتهم نحو التنوير.هناك أيضًا بعض الغرابة مع
let
وconst
التي إذا لم تكن على دراية بها يمكنك من خلال بعض الحلقات (انظر: المنطقة الميتة المؤقتة ). لا يؤدي هذا إلى استبعاد استخدامlet
وconst
، على الرغم من أن هذا أمر مزعج. هذا يعني فقط أن التملص من شيء ما لا يقل أهمية عن معرفة الشيء.