3.2 KiB
id, title, challengeType, videoUrl, forumTopicId, dashedName
| id | title | challengeType | videoUrl | forumTopicId | dashedName |
|---|---|---|---|---|---|
| 56533eb9ac21ba0edf2244bd | تمرير القيم إلى الوظائف باستخدام الوسيطات | 1 | https://scrimba.com/c/cy8rahW | 18254 | passing-values-to-functions-with-arguments |
--description--
إن الوسائط (parameters) متغيرات تعمل كعناصر ناقلة للقيم الذي تعطى لوظيفة (function) عند تفعيلها. عندما يتم تعريف وظيفة، فإنها تُعرَّف عادة مع واحد أو أكثر من الوسائط. القيم الفعلية التي تدخل (أو "تمرر") إلى وظيفة عند استدعائها هي معروفة باسم المعطيات (arguments).
إليك وظيفة ذات وسيطين، param1 و param2:
function testFun(param1, param2) {
console.log(param1, param2);
}
ثم يمكننا تفعيل testFun مثل: testFun("Hello", "World");. لقد مرَّرنا معطيين من نوع مقطع نصي، Hello و World. داخل الوظيفة، param1 سيتساوى مع المقطع Hello و param2 سيتساوى مع المقطع World. لاحظ أنه يمكنك تنفيذ testFun مرة أخرى مع معطيات (arguments) مختلفة ووسائط (parameters) لتأخذ قيمة المعطيات الجديدة.
--instructions--
- أنشئ وظيفة تسمى
functionWithArgsتقبل معطييّن وتخرج المجموع الخاص بهم إلى الكونسول. - استدعي الوظيفة برقمين كحجتين.
--hints--
يجب أن تكون functionWithArgs وظيفة.
assert(typeof functionWithArgs === 'function');
يجب أن تنتج functionWithArgs(1,2) قيمة 3.
if (typeof functionWithArgs === 'function') {
capture();
functionWithArgs(1, 2);
uncapture();
}
assert(logOutput == 3);
يجب أن تنتج functionWithArgs(7,9) قيمة 16.
if (typeof functionWithArgs === 'function') {
capture();
functionWithArgs(7, 9);
uncapture();
}
assert(logOutput == 16);
يجب عليك استدعاء functionWithArgs برقمين بعد تعريفها.
assert(
/functionWithArgs\([-+]?\d*\.?\d*,[-+]?\d*\.?\d*\)/.test(
code.replace(/\s/g, '')
)
);
--seed--
--before-user-code--
var logOutput = "";
var originalConsole = console
function capture() {
var nativeLog = console.log;
console.log = function (message) {
if(message) logOutput = JSON.stringify(message).trim();
if(nativeLog.apply) {
nativeLog.apply(originalConsole, arguments);
} else {
var nativeMsg = Array.prototype.slice.apply(arguments).join(' ');
nativeLog(nativeMsg);
}
};
}
function uncapture() {
console.log = originalConsole.log;
}
capture();
--after-user-code--
uncapture();
if (typeof functionWithArgs !== "function") {
(function() { return "functionWithArgs is not defined"; })();
} else {
(function() { return logOutput || "console.log never called"; })();
}
--seed-contents--
--solutions--
function functionWithArgs(a, b) {
console.log(a + b);
}
functionWithArgs(10, 5);