2016-07-25 84 views
0

我有一个很大的代码库,我的任务是实现附加功能。代码是Node.js - Javascript。功能 - 传递参数。

有一个功能,它是这样的:

function checkPeople(first, second) { 
if(second) { 
    //do some things... 
    } 
} 

就在同函数被调用好几次,但通常它被称为像:

checkPeople(first); 

或...

checkPeople(first, second); 

这取决于正在使用什么。参数“first”始终发送。

现在我有额外的功能添加到相同的功能,但与第三个参数:

function checkPeople(first, second, third) { 
    if(second) { 
    //do some things... 
    } 
    if(third) { 
    //do some things 
    } 
} 

我当时就想,第三个参数添加到函数,只要该函数被调用(约2倍) ,并检查函数内部参数的存在。它已经完成了参数“秒”。

此方法是否有效?

谢谢

+2

是的,这是一种有效的方法。 – urvashi

+1

@Wexoni基于'checkPeople'函数,这可以工作,是的。它是否必须对每个人进行相同的检查,或者是否具有基于参数的不同功能? – DoXicK

+0

这是通常的做法。或者有时他们添加默认值 –

回答

1

如果你在这样的参数传递,当你调用函数,使用空作为第二个参数,则不会拨打第二个。假设这就是你想要做的。 checkPeople(first, null, third)

0

我打算在这里做一个假设,但是因为函数被调用checkPeople我会假设你对每个人都进行相同的检查(例如:检查每个人是否他。 ..存在)

如果是这样的话:

function checkPeople() 
{ 
    var people = Array.prototype.slice.call(arguments); 
    return people.map(function(person) { 
     return person == 'eric'; // only eric is a person today 
    }); 
} 

现在,你可以这样做:如果确实有二

var results = checkPerson('eric','peter','james'); // [true, false, false]; 
var result = checkPerson('eric'); // [true] 
var result = checkPerson('james'); // [false] 

不同的检查为first,secondthird参数,那么你确实仍然必须执行if (second) { .. }检查。

+0

在“现在,你可以做到这一点”下的第一个选项与你的代码不匹配。你是不是想把这三个名字放到一个数组中并传递数组? – jfriend00

+0

@ jfriend00废话,哈哈。我重写了该函数,但忘记更新一行。更新! – DoXicK