我编写了一个函数,其中我希望参数与空格连接:
function sayIt(str) {
var stringCollection = [];
this.addToCollection = function(str){
stringCollection.push(str);
if(!str){ // for the () part in the call
return stringCollection.join(" ");
}
};
return this.addToCollection(str);
}
console.log(sayIt('my')('name')('is')('Harry')()); // should log "my name is Harry"
它给了我一个TypeError。任何想法,为什么?
答案 0 :(得分:4)
当你将一个单词作为参数时,你不会返回一个函数 - 试试这个;
function sayIt(str) {
var stringCollection = [];
function concat(str){
stringCollection.push(str);
if(!str){ // for the () part in the call
return stringCollection.join(" ");
}
return concat;
};
return concat(str);
}
alert(sayIt('my')('name')('is')('Harry')()); // should log "my name is Harry"
答案 1 :(得分:2)
我不太喜欢你的方法的设计,因为它对我来说似乎很脆弱,但我相信你背后有理由。
修改
this.addToCollection = function(str){
stringCollection.push(str);
if(!str){ // for the () part in the call
return stringCollection.join(" ");
}
};
要
this.addToCollection = function(str){
stringCollection.push(str);
if(!str){ // for the () part in the call
return stringCollection.join(" ");
}
return this.addToCollection;
};