我的功能中有一些未定义的东西

时间:2012-03-06 10:27:26

标签: javascript

我无法发现它!上面的代码在控制台“undefinedipsum”中返回

// At the end
// Call substring, passing "lorem ipsum dolor" to `input`, `6` to 
// `start`, and `10` to `end`.

var substring = function(input, start, end){
    var i;
    var subset;
    for(i=start; i<=end; i++){
        subset += input[i]
    }
    return subset;
}

console.log(substring("lorem ipsum dolor",6,10))

3 个答案:

答案 0 :(得分:4)

执行第一个并置时,

subset未定义(并且由于您将其与字符串连接,undefined将转换为字符串)。使用空字符串初始化subset

var substring = function(input, start, end){
    var i;
    var subset = "";
    for(i=start; i<=end; i++){
        subset += input[i];
    }
    return subset;
}

我认为真正的问题是,为什么当你已经存在一种非常好的String.prototype.substring方法时,你自己写这个呢?

答案 1 :(得分:2)

初始化变量subset

var subset ="";

答案 2 :(得分:1)

您忘了初始化变量。

var subset = '';

否则你+=就会发现一些不是字符串的东西。

var x;
console.log(x+''); // "undefined"

x = x + 'a';
console.log(x);    // "undefineda"