结论:
- typeof 返回的是字符串
- 返回的字符串 都是小写
菜鸡的踩坑之路,话不多说,直接上例子
var nums = [1,1,1,"1","1.5","a"];
var filterResult = nums.filter(function(item,index,array){
return typeof item != Number;
});
alert(filterResult); // 1,1,1,"1","1.5","a"
我原以为会返回 "1","1.5","a"来着,结果反手一点返回1,1,1,"1","1.5","a" 淡定
调试
var nums = [1,1,1,"1","1.5","a"];
var filterResult = nums.filter(function(item,index,array){
console.log((typeof item) + " " + item + " " + (typeof item != "number")); // 打印看下结果
/* 控制台输出结果如下
number 1 false
number 1 false
number 1 false
number 1 false
string 1 true
string 1.5 true
string a true
*/
return typeof item != Number;
});
alert(filterResult); // 1,1,1,"1","1.5","a"
懵逼ing 我在哪 没错啊
分析:
谷歌 typeof item != Number 发现别人 Number带有引号
试试typeof item != "Number"
测试:
var nums = [1,1,1,"1","1.5","a"];
var filterResult = nums.filter(function(item,index,array){
return typeof item != "Number";
});
alert(filterResult); // 1,1,1,"1","1.5","a" 懵逼 还是一样
分析: 为什么别人可以 我不行 最后发现 别人是"number"小写的n,我是"Number"大写的n
测试:
var nums = [1,1,1,"1","1.5","a"];
var filterResult = nums.filter(function(item,index,array){
return typeof item != "number";
});
alert(filterResult); // "1","1.5","a" 终于对上了