2012-03-06 16 views
0

中有一些不明確的東西,我無法發現它!執行第一級聯當上述控制檯「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)) 
+0

@ADC:不,它可以省略(雖然我不會推薦它) – 2012-03-06 10:31:50

回答

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方法已經存在?

+0

它的工作,謝謝。 – metrampaz 2012-03-06 10:35:20

+0

沒問題,很高興我可以幫助:)是否有一個原因,你正在編寫自己的'substring'函數,而不是使用內置的? – 2012-03-06 10:36:30

2

初始化變量subset

var subset =""; 
1

你忘了初始化你的變量。

var subset = ''; 

否則你+=到的東西,下手,是不是字符串。

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

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