• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
chenmeijiao
博客园    首页    新随笔    联系   管理    订阅  订阅
Javascript编程小技巧

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了        

 

posted on 2020-11-16 10:32  chenmeijiao  阅读(161)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3