js常遇到问题
平时开发总喜欢相当然,然后就会有很多:惊不惊喜,意不意外
push和unshift的文档认知不全
let t = [].push(1)
console.log(t); //1
let t = [''].unshift(1)
console.log(t); //2
MDN:
push()方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度
我还以为是返回新的数组呢,giao了半天是返回新的长度。
null和undefined在min,max等函数中的变化
Math.min(...[null,1,2]) //0
Math.min(...[undefined,1,2]) //NaN
Math.min(...['',1]) //0
MDN:给定数值中最小的数。如果任一参数不能转换为数值,则返回[
NaN]
注意看啊,null是被判为0的,undefined是被转成NaN的。
sort下的null和undefined
var items = [
{ name: 'A', value: -1 },
{ name: 'E',value:null },
{ name: 'B', value: undefined },
{ name: 'C', value: 0 },
{ name: 'D', value: 2 },
];
// sort by value
items.sort(function (a, b) {
return (b.value - a.value)
});
console.log(items);
//{name: 'D', value: 2}
//{name: 'E', value: null} null 做为0处理了
//{name: 'C', value: 0}
//{name: 'A', value: -1}
//name: 'B', value: undefined}
you see you see see,null是被当做0来处理的。再来看看undefined
var items = [
{ name: 'A', value: -1 },
{ name: 'B', value: undefined },
{ name: 'C', value: 0 },
{ name: 'D', value: 2 },
];
// sort by value
items.sort(function (a, b) {
return (b.value - a.value)
});
//{name: 'A', value: -1}
//{name: 'B', value: undefined} //居然没有排序
//{name: 'D', value: 2}
//{name: 'C', value: 0}
var items = [
{ name: 'A', value: -1 },
{ name: 'D', value: 2 },
{ name: 'B', value: undefined },
{ name: 'C', value: 0 },
];
//after sort items...
//{name: 'D', value: 2}
//{name: 'C', value: 0}
//{name: 'A', value: -1}
//{name: 'B', value: undefined //这里排序了
假如不想让null得值排到最后,可以这么写
return Number( b.value!= null) - Number( a.value!= null) || b.value - a.value ;
toFixed精度丢失
四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一
console.log(0.555.toFixed(2)); //0.56
console.log(1.555.toFixed(2)); //1.55 //秃然的自我 --500
console.log(2.555.toFixed(2)); //2.56
console.log(3.555.toFixed(2)); //3.56
会持续跟新,有问题欢迎指出,谢谢