我需要编写一个函数来检索传递给函数的最后一个参数。如果它只是参数,它应该返回最后一个元素。如果它是一个字符串,它应该返回最后一个字符。数组应该返回数组的最后一个元素。我的代码适用于数组,字符串和参数,只要它们不是全部字符串。个别字符在javascript参数中被视为字符串
function last(list){
var arr;
if(list instanceof Array){
return list[list.length-1];
}
if(typeof list === 'string' || list instanceof String){
arr = list.split("");
return arr[arr.length-1];
}
return arguments[arguments.length-1];
}
这适用于几乎所有情况,但我有一个问题,当输入是一堆字符串参数。
Test.assertEquals(last('a','b','c','z'), 'z');
返回“A”
为什么不相交的字符串进行测试时,如果参数数组或字符串,我怎么能universaly访问任意参数的最后一个值评估为真?
这不是一个可接受的解决办法。该函数需要能够接受数组,字符串和参数。提供的测试用例是Test.assertEquals(last(1,“b”,3,“d”,5),5);和我的代码工作,因为它下降到最后一个返回语句,但不相交的字符被读为一个字符串,它进入第二个if语句。 – user137717