0

循环遍历此字符串时,警报会打印出 test 4 次(正确),但最后还会打印“未定义”。我如何使它不返回未定义。

这将返回 - undefinedCAFE ::

alert(match("abcdef", "CAfe"));


function match(string, pattern) {

    var patternUpperCase = pattern.toUpperCase();
    var stringUpperCase = string.toUpperCase();
    var stringConcatenate;
    var answer;

    for (var i = 0; i < patternUpperCase.length; i++) {
        if (patternUpperCase.charAt(i) != undefined) {
            if (patternUpperCase.charAt(i) >= 'A' && patternUpperCase.charAt(i) <= 'Z') {
                stringConcatenate += patternUpperCase.charAt(i);
                alert("test");
            }
        }
    }
    return stringConcatenate;
}
4

3 回答 3

2

match函数没有 return 语句,因此它返回undefined. 这意味着

alert(match("abcdef","CAfe"));

将始终至少显示一次“未定义”警报。要不显示警报,请在不使用的情况下调用该函数alert

match("abcdef","CAfe");

或者,您可以使函数返回某些内容,例如stringConcatenate,否则将无缘无故地计算。

于 2013-11-07T13:32:11.363 回答
0

尝试这个

alert(match("abcdef", "CAfe"));

    function match(string, pattern) {

    var patternUpperCase = pattern.toUpperCase();
    var stringUpperCase = string.toUpperCase();
    var stringConcatenate;
    var answer;
    var i = 0;


    for (var i = 0; i < patternUpperCase.length; i++) {
        if (patternUpperCase.charAt(i) != undefined) {
            if (patternUpperCase.charAt(i) >= 'A' && patternUpperCase.charAt(i) <= 'Z') {
                stringConcatenate = stringConcatenate + patternUpperCase.charAt(i);
                alert("test");
            }
        }
    }
   return stringConcatenate;
}
于 2013-11-07T13:37:03.823 回答
0

最后一个“未定义”值是您的函数的结果:

alert(match("abcdef", "CAfe"));

http://jsfiddle.net/sava/Dw7jm/

于 2013-11-07T13:38:19.937 回答