一个返回数组或多个函数的函数?

时间:2015-01-21 21:36:03

标签: javascript performance

我在一些代码中遇到了这个我正在重新工作,如果除了个人喜好之外有任何理由这样做,我很好奇。考虑到使用具有描述性名称的几个小函数是多么容易,对我来说似乎不必要地混淆了。该代码的目的是验证许多变量,以确保在生成业务数据报告时数据格式正确且在可接受的范围内。该报告主要是一个引起人们关注日程安排问题的工具。

有一个函数可以传递多个值,对每个函数运行测试,然后将所有结果作为布尔数组传回。

function testAll(test1, ..., test10) {
    var results = [false, ..., false];
    if (test1 condition == true) {
        results[0] = true;
    }
    ...
    if (test10 condition == true) {
        results[9] = true;
    }
    return results;
}

然后调用该函数并像这样使用。

var tblData = getCurrentData(); // function that gets database info through AJAX

for (i = 0; i < tblData.Rows.Count; i++) {

    // some code to append table element

    var results = testAll(strStartDate, ..., strTotalHours);
    if (results[0] == true) {
        $('#startDate' + i.toString()).css('background-color', 'red');
    }
    ...
    if (results[9] == true) {
        $('#projectTime' + i.toString()).css('background-color', 'red');
    }
}

原作者已经离开,并没有评论他的代码

1 个答案:

答案 0 :(得分:0)

虽然这在技术上可能无法解决我提出的问题,但在这种情况下,这是清理代码的解决方案。

经过进一步审查后,使用执行css格式化的非值返回函数更有意义,因为评估后的任务有多简单。

- 修改功能

function verifyData(startDate, ..., timeSpent) {
    if (startDate isValid != true) {
        $('#startDate' + i.toString()).css('background-color', 'red');
    }
    ...
    if (timeSpent isValid != true) {
        $('#projectTime' + i.toString()).css('background-color', 'red');
    }
}

- 调用和使用

的新方法
var tblData = getCurrentData(); // function that gets database info through AJAX

for (i = 0; i < tblData.Rows.Count; i++) {
    // some code to append table element
    verifyData(strStartDate, ..., strTotalHours, i);
}