3.0 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d7b87367417b2b2512b42 | Mutate an Array Declared with const | 1 | 301206 | mutate-an-array-declared-with-const |
--description--
إذا كنت غير مألوفة مع const، تحقق من هذا التحدي حول كلمة const الثابتة.
يحتوي تعريف const على العديد من حالات الاستخدام في JavaScript الحديثة.
بعض المطورين يفضلون تعيين جميع متغيراتهم باستخدام const بشكل افتراضي، ما لم يعلموا أنهم سيحتاجون إلى إعادة تعيين القيمة. فقط في تلك الحالة، يستخدمون let.
ومع ذلك، من المهم أن نفهم أن الـ objects (بما في ذلك arrays و functions) المخصصة للمتغير باستخدام const لا تزال قابلة للتغيير. استخدام تعريف const يمنع فقط إعادة تعيين معرف المتغير.
const s = [5, 6, 7];
s = [1, 2, 3];
s[2] = 45;
console.log(s);
s = [1, 2, 3] سيؤدي إلى خطأ. بعد التعليق على هذا السطر، سيعرض console.log القيمة [5, 6, 45].
كما ترون، يمكنك تغيير الكائن [5, 6, 7] نفسه والمتغير s سيظل يشير إلى الـ array المعدلة [5, 6, 45]. مثل جميع الـ arrays، عناصر الـ array في s قابلة للتغيير، ولكن لأن const تم استخدامها، لا يمكنك استخدام معرف المتغير s للإشارة إلى array مختلفة باستخدام مشغل التعيين (assignment operator).
--instructions--
الـ array معرفة كـ const s = [5, 7, 2]. قم بتغيير الـ array إلى [2, 5, 7] باستخدام تعيينات العناصر المتنوعة.
--hints--
لا ينبغي أن تستبدل كلمة const.
(getUserInput) => assert(getUserInput('index').match(/const/g));
s يجب أن يكون متغير ثابت (باستخدام const).
(getUserInput) => assert(getUserInput('index').match(/const\s+s/g));
لا يجب عليك تغيير تعريف الـ array الأصلي.
(getUserInput) =>
assert(
getUserInput('index').match(
/const\s+s\s*=\s*\[\s*5\s*,\s*7\s*,\s*2\s*\]\s*;?/g
)
);
s يجب أن يساوي [2, 5, 7].
assert.deepEqual(s, [2, 5, 7]);
--seed--
--seed-contents--
const s = [5, 7, 2];
function editInPlace() {
// Only change code below this line
// Using s = [2, 5, 7] would be invalid
// Only change code above this line
}
editInPlace();
--solutions--
const s = [5, 7, 2];
function editInPlace() {
s[0] = 2;
s[1] = 5;
s[2] = 7;
}
editInPlace();