细节 javascript 使用的技巧

今天看一篇文章,学到了很多,好记性不如烂笔头~

字符串转换为数字
var str = '111';
console.log(+str); // 111
console.log(str-0); // 111
console.log(typeof +str); // number
console.log(typeof (str-0)); // number
// 日期也可以
var data = +new Date(); // 1555584126215
数值向下取整
var a = ~~2.50; // 2
var a= 2.50>>0; // 2
var a= 2.50|0; // 2
Math.floor(2.50); // 2
字符串取整
var a = "2.50"|0; // 2
var a= "2.50"^0; // 2
parseInt(2.50); // 2
使用 && 替代单一的条件判断
// 可以这样
if(!ticket) {
    getLogin();
}
// 也可以这样写
!ticket && getLogin();
// 或
ticket || getLogin();
通过闭包调用setTimeout
for(var i = 0; i < 10; i++) {
    setTimeout(function(){
        console.log(i);  // 10 10 10 ...
    },1000);
}

for(var i = 0; i < 10; i++) {
    (function(i){
        setTimeout(function(){
            console.log(i);  // 0 1 2 3 4 ...
        },1000)
    })(i);
}
时间日期格式转换函数
// 实现方法:在 Date 原型上添加方法
Date.prototype.format = function(format) { 
    var o = {
        'M+': this.getMonth() + 1,                      //month
        'd+': this.getDate(),                           //day
        'h+': this.getHours(),                          //hour
        'm+': this.getMinutes(),                        //minute
        's+': this.getSeconds(),                        //second
        'q+': Math.floor((this.getMonth() + 3) / 3),    //quarter
        'S': this.getMilliseconds()                     //millisecond
    }
    if (/(y+)/.test(format)) {
        format = format.replace(
            RegExp.$1,
            (this.getFullYear() + '').substr(4 - RegExp.$1.length)
        );
    }
    for (var k in o) {
        if (new RegExp('(' + k + ')').test(format)) {
            format = format.replace(
                RegExp.$1,
                RegExp.$1.length == 1 ?
                    o[k]: ('00' + o[k]).substr(('' + o[k]).length)
            );
        }
    }
    return format;
}

// 使用方法
var now = new Date(); 
var nowStr = now.format('yyyy-MM-dd hh:mm:ss'); 

var testDate = new Date(); 
var testStr = testDate.format('YYYY年MM月dd日hh小时mm分ss秒'); 
alert(testStr); 

alert(new Date().format('yyyy年MM月dd日')); 
alert(new Date().format('MM/dd/yyyy')); 
alert(new Date().format('yyyyMMdd')); 
alert(new Date().format('yyyy-MM-dd hh:mm:ss'));
格式化JSON

你之前可能使用过 JSON.stringify,但你是否知道它还可以用来给 JSON 添加缩进?
stringify() 方法可以接受两个额外的参数,一个是函数(形参为 replacer),用于过滤要显示的 JSON,另一个是空格个数(形参为 space)。
space 可以是一个整数,表示空格的个数,也可以是一个字符串(比如’ ’表示制表符),这样得到的 JSON 更容易阅读

console.log(JSON.stringify({ name: '惠丽', id: '123' }, null, '   '));
// Result:
// '{
//  "name": '惠丽',
//  "id":'123'
// }'

参考链接:https://blog.beard.ink/tags/JavaScript/

你可能感兴趣的:(细节 javascript 使用的技巧)