1、单行写一个评级组件
"★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);
定义一个变量rate是1到5的值,然后执行上面代码
2、论如何优雅的取随机字符串
// Math.random().toString(36) 生成随机数
// .toString(36) 将随机数转换成16进制数
// .substring(2) 将'0.'截掉
Math.random().toString(36).substring(2);
论如何优雅的取整
3、论如何优雅的取整
// 双波浪线 ~~ 操作符也被称为“双按位非”操作符。 var a = ~~2.33 // | (按位或) 对每一对比特位执行或(OR)操作。 var b= 2.33 | 0 // ^ (按位异或),对每一对比特位执行异或(XOR)操作。 var c= 2.33 ^ 0 // >> (右移) 操作符会将第一个操作数向右移动指定的位数。 var d = 2.33 >> 0
4、如何优雅的实现金钱格式化:1234567890 --> 1,234,567,890
// 1、用正则魔法实现: var test1 = '1234567890' var format = test1.replace(/\B(?=(\d{3})+(?!\d))/g, ',') // 2、非正则的优雅实现 function formatCash(str) { return str.split('').reverse().reduce((prev, next, index) => { return ((index % 3) ? next : (next + ',')) + prev }) } // 3、使用toLocaleString (123456789).toLocaleString('en-US')
5、论如何最佳的让两个整数交换数值
// 1、使用位运算 let a = 3,b = 4 a ^= b b ^= a a ^= b // 2、ES6 var a = 3,b = 4; [b, a] = [a, b]
6、0.1 + 0.2 === 0.3
Number.EPSILON=(function(){ //解决兼容性问题 return Number.EPSILON? Number.EPSILON:Math.pow(2,-52); })(); //上面是一个自调用函数,当JS文件刚加载到内存中,就会去判断并返回一个结果,相比if(!Number.EPSILON){ // Number.EPSILON=Math.pow(2,-52); //}这种代码更节约性能,也更美观。 function numbersequal(a,b){ return Math.abs(a-b)<Number.EPSILON; } //接下来再判断 var a=0.1+0.2, b=0.3; console.log(numbersequal(a,b)); //这里就为true了