У меня есть этот кусок кода:Создать куски кода (функции, переменные) из массива (forEach)?
foo.bar('run', function() {
var text1 = foo.url('./src/url/text1.txt')
.go(bar.do({ something }))
.also(bar({
variable: 1,
else: 2,
}).on('exception', doSomething))
.also(bar.url('.src/url/source'))
var textLong = foo.url('./src/url/textLong.txt')
.go(bar.do({ something }))
.also(bar({
variable: 1,
else: 2,
}).on('exception', doSomething))
.also(bar.url('.src/url/source'))
var text = foo.url('./src/url/text.txt')
.go(bar.do({ something }))
.also(bar({
variable: 1,
else: 2,
}).on('exception', doSomething))
.also(bar.url('.src/url/source'))
return myCustomFunction(text1, textLong, text);
}
Как вы можете видеть это как анти-DRY, насколько это возможно, каждая переменная является тем же самым исключая имя переменной и имя файла (foo.url).
Я интересно, если это возможно, чтобы сделать его проще, что-то вроде:
var files = [ 'text1', 'textLong', 'text'];
И потом:
foo.bar('run', function() {
files.forEach(function(fileName){
var fileName = foo.url('./src/url/'+ fileName + '.txt')
.go(bar.do({ something }))
.also(bar({
variable: 1,
else: 2,
}).on('exception', doSomething))
.also(bar.url('.src/url/source'))
})
return myCustomFunction(text1, textLong, text);
})
Но лучшее, что я мог бы получить с моей второй подход text1 is not defined
. Есть несколько вопросов относительно SO относительно динамического создания переменных, но они обычно имеют одинаковые имена +, я никогда не видел их в сочетании с пользовательскими функциями.
Любые подсказки?
Или даже: '\' ./src/url/$ {имя_файла} .txt \ '' –
Также используйте 'const' вместо' let' для константы массив строк выше. –
это должно быть 'return myCustomFunction (... resultOfFilesMap);' not '... files' – Thomas