Итак, вы сделали: вы передали результат randomNumber()
первому параметру функции objMaker
. Здесь я подчеркиваю «результат», потому что это означает, что ваш аргумент cb
внутри функции randomNumber
является числом, то есть он не изменяется внутри вашей функции.
function randomNumber(min, max){
min = Math.ceil(0);
max = Math.floor(3);
return Math.floor(Math.random() * (max - min)) + min;
}
function objMaker(cb, num){
console.log(cb); // notice that this is a number
let obj = {
a: 0,
b: 0
}
for (var i = 0; i < num; i++) {
// cb is both same since a number was passed (not a function)
obj.a += cb;
obj.b += cb; // both cb here are identical, so a and b is the same at the end
}
return obj;
}
console.log(objMaker(randomNumber(), 9)) // randomNumber() here returns a random value
Честно говоря, я лично не понимаю, почему вы должны передавать функцию randomNumber
в objMaker
, но, предположив, что вам нужно, я думаю, лучший способ здесь - передать randomNumber
функцию вместо результата randomNumber()
.
function randomNumber(min, max){
min = Math.ceil(0);
max = Math.floor(3);
return Math.floor(Math.random() * (max - min)) + min;
}
function objMaker(cb, num){
let obj = {
a: 0,
b: 0
}
for (var i = 0; i < num; i++) {
obj.a += cb();
obj.b += cb();
}
return obj;
}
console.log(objMaker(randomNumber, 9))
Или, в зависимости от вашего использования, вы можете иметь разные, но постоянные термины cb для a и b.
function randomNumber(min, max){
min = Math.ceil(0);
max = Math.floor(3);
return Math.floor(Math.random() * (max - min)) + min;
}
function objMaker(cb, cb2, num){
let obj = {
a: 0,
b: 0
}
for (var i = 0; i < num; i++) {
obj.a += cb;
obj.b += cb2;
}
return obj;
}
console.log(objMaker(randomNumber(), randomNumber(), 9))