Javascript 为什么控制台告诉我。过滤器不是一个函数?
当我运行这个函数时,它会说str.filter不是一个函数。因为Javascript 为什么控制台告诉我。过滤器不是一个函数?,javascript,Javascript,当我运行这个函数时,它会说str.filter不是一个函数。因为filter是一个数组函数(array.prototype.filter),而您在字符串上调用它str.split返回一个数组,不会对str进行任何更改。像调用console.log(str.split(“”).fil)一样调用它。应该可以。字符串对象没有筛选器方法,字符串是不可变的。 因此,实际上,str.split(“”)不会更改字符串的值,而是返回一个新字符串,您没有在变量中捕获该字符串 试试看 因为您在str上调用“filt
filter
是一个数组函数(array.prototype.filter
),而您在字符串上调用它str.split
返回一个数组,不会对str
进行任何更改。像调用console.log(str.split(“”).fil)一样调用它。应该可以。字符串对象没有筛选器方法,字符串是不可变的。
因此,实际上,str.split(“”)
不会更改字符串的值,而是返回一个新字符串,您没有在变量中捕获该字符串
试试看
因为您在str上调用“filter”的执行,str是一个没有函数“filter”的对象,也没有原型。由于筛选器不存在,因此属性的值未定义,无法调用,因为其类型不是函数。因为字符串没有
filter
方法。请尝试:console.log([…str].fil.join`)代码>
var str = "I am a string.";
console.log(str.split(''));
var fil = function(val){
return val !== "a";
};
console.log(str.filter(fil));
console.log(str.split('').filter(fil));