Javascript x不是一个函数-为什么这个函数不起作用?
我试图从全局变量title返回一个连字符字符串。我很难理解为什么这个函数不起作用,而另一个函数会起作用,但它改变了全局变量 当我没有将字符串和数组方法分配给变量时,收到的“x”不是函数错误。当我将它们赋给变量时,函数会生成正确的输出,但会修改全局变量。 接收“x”不是函数错误:Javascript x不是一个函数-为什么这个函数不起作用?,javascript,Javascript,我试图从全局变量title返回一个连字符字符串。我很难理解为什么这个函数不起作用,而另一个函数会起作用,但它改变了全局变量 当我没有将字符串和数组方法分配给变量时,收到的“x”不是函数错误。当我将它们赋给变量时,函数会生成正确的输出,但会修改全局变量。 接收“x”不是函数错误: function urlSlug(title) { title.toLowerCase().split(" "); title.filter(el => {return el}); title.join
function urlSlug(title) {
title.toLowerCase().split(" ");
title.filter(el => {return el});
title.join("-");
return title;
}
更改全局变量:
function urlSlug(title) {
var arr = title;
var arr1 = arr.toLowerCase().split(" ");
var filtered = arr1.filter(el => {return el});
var arr2 = filtered.join("-");
console.log(arr2);
return arr2;
}
函数urlSlug(标题){
//split()返回一个新数组;不要就地修改变量。
title.toLowerCase().split(“”);
title.filter(el=>{return el});//因此,title不是一个数组,而是一个字符串。filter没有定义。因此它会抛出一个错误
标题.加入(“-”);
返回标题;
}
这就是为什么:TypeError:title.filter不是一个函数。然后该函数不返回任何内容
实现这一目标的方法是:
函数urlSlug(标题){
设splitted=title.toLowerCase().split(“”);
splitted=splitted.filter(el=>el);
返回title.join(“-”);
}
或者在一行中:
函数urlSlug(标题){
返回title.split(“”).filter(el=>el.join(“”);
}
什么是不是函数的x
?你从不在代码中定义或使用这样的变量拆分/联接的替代方法是替换replace
:title.toLowerCase().replace(/\s/g,“-”)
我的玻璃球告诉我,他得到的是“title.filter不是函数”,因为title
是字符串,他没有将split
的结果分配给title
。像split()
、join()
和filter()
这样的函数不会修改它们被调用的内容,它们返回新的数组和字符串。顺便说一句,el=>{return el}
可以是el=>el