当我们使用new Array声明数组的时候 如果传入一个值 表示数组的长度 但是会用empty占位
console.log(new Array(3));
console.log(new Array(3, 4));
此时我们就可以使用Array.of解决这个问题 其中传值就是数组中的每个值
console.log(Array.of(3));
console.log(Array.of(3, 4));
将类数组或部署了iterator接口的对象转换为数组
var obj = {
start: [1, 2, 3, 4],
end: [5, 6, 7, 8],
[Symbol.iterator]() {
let index = 0,
arr = [...this.start, ...this.end],
length = arr.length;
return {
next() {
if (index < length) {
return {
value: arr[index++],
done: false,
};
} else {
return {
value: undefined,
done: true,
};
}
},
};
},
};
console.log(Array.from(obj));
对象的keys values entries 返回的都是数组 并且有length属性 不仅可以for of 迭代 也可以for循环
console.log(Array.of(3, 4));
var obj = {
a: 1,
b: 2,
c: 3,
};
console.log(Object.keys(obj));
console.log(Object.values(obj));
console.log(Object.entries(obj));
for (let i of Object.keys(obj)) {
console.log(i);
}
for (let i = 0; i < Object.keys(obj).length; i++) {
console.log(Object.keys(obj)[i]);
}
数组上的放回的是迭代器函数 没有length属性 只能for of 迭代 不能for循环遍历
var arr = [1, 2, 3];
console.log(arr.keys());
console.log(arr.values());
console.log(arr.entries());
for (let i of arr.keys()) {
console.log(i);
}
for (let i = 0; i < arr.keys().length; i++) {
console.log(arr.keys()[i]);
}
我们先来看下Number构造器
console.log(Number.prototype);
indexOf有一个缺点就是找不到NaN
console.log([NaN].indexOf(NaN));
我们可以使用findIndex解决这个问题
console.log([NaN].findIndex((y) => Object.is(NaN, y)));
十进制转换为二进制
console.log(Number.prototype.toString.call(200, 2));
二进制转换为10进制
console.log(parseInt(11001000, 2));
0x开头表示16进制
0b开头表示2进制
0o开头表示8进制
全局的isNaN与挂载到Number上的isNaN的区别
全局的isNaN会隐式转换 Number上的不会隐式类型转换
console.log(isNaN('NaN'));
console.log(Number.isNaN('NaN'));
对于全局的isFinite与Number上的isFinite的区别
全局的isNaN会隐式转换 Number上的不会隐式类型转换
console.log(isFinite('42'));
console.log(Number.isFinite('42'));
console.log(Number.isInteger(24));
console.log(Number.isInteger(24.0));
最大安全整数
console.log(Number.MAX_SAFE_INTEGER);
console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1);
最小安全整数
console.log(Number.MIN_SAFE_INTEGER);
console.log(Number.MIN_SAFE_INTEGER === -Math.pow(2, 53) + 1);
isSafeInteger 判断是否是安全整数
console.log(Number.isSafeInteger(1, 1));