Javascript x不是一个函数-为什么这个函数不起作用?

Javascript x不是一个函数-为什么这个函数不起作用?,javascript,Javascript,我试图从全局变量title返回一个连字符字符串。我很难理解为什么这个函数不起作用,而另一个函数会起作用,但它改变了全局变量 当我没有将字符串和数组方法分配给变量时,收到的“x”不是函数错误。当我将它们赋给变量时,函数会生成正确的输出,但会修改全局变量。 接收“x”不是函数错误: function urlSlug(title) { title.toLowerCase().split(" "); title.filter(el => {return el}); title.join

我试图从全局变量title返回一个连字符字符串。我很难理解为什么这个函数不起作用,而另一个函数会起作用,但它改变了全局变量

当我没有将字符串和数组方法分配给变量时,收到的“x”不是函数错误。当我将它们赋给变量时,函数会生成正确的输出,但会修改全局变量。 接收“x”不是函数错误:

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