Как передать функцию с параметрами в качестве аргумента другой функции
Есть следующая логика:
random = function (max) {
var min = 1;
return Math.floor(Math.random() * (max - min) + min)
}
someFunction = function (num) {
var someString = 'numbers: '
for (var a=0;a<=10;a++) {
someString = someString + num
}
console.log(someString)
}
someFunction(random(6))
Вернёт 'numbers: 66666666666' или 'numbers: 11111111111' и так далее. Но мне нужно что бы функция каждый раз вызывалась, а не только первый раз при указание её. Есть такой вариант, но мне он не очень нравиться:
random = function (max) {
var min = 1;
return Math.floor(Math.random() * (max - min) + min)
}
someFunction = function (num) {
var someString = 'numbers: '
for (var a=0;a<=10;a++) {
someString = someString + num()
}
console.log(someString)
}
someFunction(function() {return random(6)})
Вернёт то что нужно 'numbers: 52524414321' Но опять же это не удобно, так как num не всегда должно быть функцией, а может быть числом, и тогда придётся писать так:
someFunction(function() {return 6})
Вообщем хочется некой эстетики в коде |
Цитата:
Опишите нужный Вам процесс работы функции - Ваши хотелки неясны! Что нужно то в итоге ? 1.Запускаем ... 2. .... .... N-ное..... |
Цитата:
someFunction = function (num) {
var someString = 'numbers: '
for (var a=0;a<=10;a++) {
someString = someString + num
}
console.log(someString)
}
someFunction(random(6))
работало так же как и вот это, и возвращало 'numbers: 52524414321',
someFunction = function () {
var someString = 'numbers: '
for (var a=0;a<=10;a++) {
someString = someString + random(6)
}
console.log(someString)
}
someFunction()
|
random = function (max) {
var min = 1;
return Math.floor(Math.random() * (max - min) + min)
}
someFunction = function (num) {
var someString = 'numbers: '
for (var a=0;a<=10;a++) {
someString = someString + eval(num)
}
alert(someString)
}
var X;
X = 'random(6)';
someFunction(X);
X = 6;
someFunction(X);
X = '\'Z\'';
someFunction(X);
|
Цитата:
Без eval я так понимаю тут ни как ? |
DragorWW,
Да есть прототипы Цитата:
|
Цитата:
someString = someString + (new Function('', 'return ' + num))();
не? |
devote,+
Работает, правда чуток напрягает двойные кавычки для строковых переменных;
random = function (max) {
var min = 1;
return Math.floor(Math.random() * (max - min) + min)
}
someFunction = function (num) {
var someString = 'numbers: '
for (var a=0;a<=10;a++) {
someString = someString + (new Function('', 'return ' + num))();
}
alert(someString)
}
var X;
X = 'random(6)';
someFunction(X);
X = 6;
someFunction(X);
X = '\'Z\'';
someFunction(X);
Кстать, devote, не глянешь темку ? = > http://javascript.ru/forum/project/3...er-frejjm.html |
Цитата:
random = function (max) {
var min = 1;
return Math.floor(Math.random() * (max - min) + min)
}
someFunction = function (num) {
var someString = 'numbers: '
for (var a=0;a<=10;a++) {
someString = someString + (new Function('x', 'try{return ' + num + '}catch(_e_){return x}'))(num);
}
alert(someString)
}
var X;
X = 'random(6)';
someFunction(X);
X = 6;
someFunction(X);
X = 'Z';
someFunction(X);
|
Цитата:
Дзен-трансгуманист, Про по условию тож думал изначально, но как то неизящно по длине и в плане понимания изменений (если комментов не), Да и условия - жесткие, к примеру захотел внедрить объект или массив (массив функций |
| Часовой пояс GMT +3, время: 16:48. |