Symbol
判断数据类型的函数,返回值为bool值,数据基本类型为boolean、number、string、null、undefined,
symbol,es6新增属性,也是一种基本数据类型,不支持new symbol()语法,会报错,表示独一无二的,
例子:
1.什么时候返回symbol
let s1=Symbol()
console.log(typeof s1)输出Symbol
console.log(s1.toString(s1))输出Symbol
独一无二的体现
console.log(Symbol()===Symbol())返回true
但是传参
console.log(Symbol(“foo”)===Symbol(“foo”))即使参数一模一样返回的也是false
function isPrimitive (value) {
return (
typeof value === 'string' ||
typeof value === 'number' ||
typeof value === 'symbol' ||
typeof value === 'boolean'
)
}
isFinite
function isValidArrayIndex (val) {
//parseFloat浮点数,数据类型转换为Number类型,
var n = parseFloat(String(val));
//isFinite用来检测无穷数,返回值为boor值
//Math.floor()方法,取整,将小数点以后的数字全部去掉,不考虑四舍五入
return n >= 0 && Math.floor(n) === n && isFinite(val)
}
makeMap
function makeMap (
str,
expectsLowerCase
) {
//Object.create()创建一个对象
var map = Object.create(null);
//用,将字符串分割为数组
var list = str.split(',');
for (var i = 0; i < list.length; i++) {
//将数组的每一项存入map
map[list[i]] = true;
}
return expectsLowerCase
//区不区分大小写
? function (val) { return map[val.toLowerCase()]; }
: function (val) { return map[val]; }
}
清空数组
function remove (arr, item) {
if (arr.length) {
var index = arr.indexOf(item);
if (index > -1) {
return arr.splice(index, 1)
}
}
}