为什么我在以下ES6 for循环中得到“未定义不是函数”?

时间:2015-10-19 09:31:24

标签: javascript ecmascript-6

输入:

  

第一行

     

第二行   第三行

     

第四行

代码:

let res = str.split('\n\n')
for (let result of res) {
    res = `<p class="blockquote">${res.replace(/^> /gm, '')}</p>`
}
console.log(`text: ${res}`)

str.split('\n\n')输出first line,second line third line,fourth line。我的期望。

现在,我想使用for循环来获取每个项目,并使用p标记将其包围。但是,我收到以下错误:

TypeError: undefined is not a function

我对ES6不太熟悉。循环有问题吗?

2 个答案:

答案 0 :(得分:3)

是的,有些不对劲。两件事。

res = `<p class="blockquote">${res.replace(/^> /gm, '')}</p>`

res最初是一个数组,因此没有replace方法。那是你得到的错误。

另一方面,一旦你解决了这个问题(用循环变量res替换result),就是将结果字符串分配给res。我不确定你的期望,但我想这不会那样。

答案 1 :(得分:3)

res循环内为for变量赋值的问题。因此,在第一个循环步骤之后,我们将在res中有另一个值,循环将结束;

试试这段代码:

let str = 'first line\n\nsecond line third line\n\nfourth line';
let res = str.split('\n\n')

for (let result of res) {
    let i = `<p class="blockquote">${result.replace(/^> /gm, '')}</p>`
    console.log(i);
}