x不是函数-为什么该函数不起作用?

时间:2020-01-16 00:35:29

标签: javascript

我正在尝试从全局变量-title返回带连字符的字符串。我很难理解为什么此功能将不起作用,而另一个功能却会改变全局变量。

当我没有将String和Array方法分配给我收到的变量时,“ 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;
}

1 个答案:

答案 0 :(得分:0)

function urlSlug(title) {
  //  split() return a new array; don't modify variable in place.
  title.toLowerCase().split(" ");
  title.filter(el => {return el}); // Consequently, title is not an array but a string. Filter is not defined. So it throws an error
  title.join("-");
  return title;
}

这就是为什么:TypeError:title.filter不是一个函数。函数将不返回任何内容。

一种实现此目的的方法是:

function urlSlug(title) {
  let splitted = title.toLowerCase().split(" ");
  splitted = splitted.filter(el => el);
  return title.join("-");
}

或一行:

function urlSlug(title) {
  return title.split(" ").filter(el=>el).join("-");
}