前端——笔试

1.异步编程

async function async1() { 
    console.log("async1 start"); 
    await async2(); 
    console.log("async1 end"); }
async function async2() {
    console.log("async2"); 
}
console.log("script start"); 
setTimeout(function () { 
    console.log("settimeout"); 
}, 0); 
async1(); 
new Promise(function (resolve) { 
    console.log("promise1"); 
    resolve(); 
}).then(function () { 
    console.log("promise2"); 
}); 
console.log("script end");
/*
打印顺序如下:
script start
async1 start
async2
promise1
script end
async1 end
promise2
settimeout
*/

2.reduce迭代器

var a = [3,2,1].reduce(Math.pow);
var b = [1,2,3].map(parseInt);
/* parseInt('1', 0); // radix为0时,使用默认的10进制。
parseInt('2', 1); // radix值在2-36,无法解析,返回NaN
parseInt('3', 2); // 基数为2,2进制数表示的数中,最大值小于3,无法解析,返回NaN
map函数返回的是一个数组,所以最后结果为[1, NaN, NaN] */
console.log(a);
console.log(b);

3.对象的深度复制

var clone = function(obj) {
    var target = {};
    for(var key in obj) {
        if(obj.hasOwnProperty(key)) {
            if(typeof obj[key] == 'object') {
                target[key] = clone(obj[key]);
            }else {
                target[key] = obj[key];
            }
        }
    }
    return target;
}
var arr = {
    4:1,
    b:3,
    c:33,
    3:{
        m:23
    }
};
var a = clone(arr);
a[2] = 5;
console.log(arr);
console.log(a);

var deepClone = function (obj) {
    var newObj = obj instanceof Array ? [] : {};
    for(var i in obj) {
        newObj[i] = typeof obj[i] == 'object' ? deepClone(obj[i]) : obj[i];
    }
    return newObj;
}
var arr = [1,2,3];
console.log(arr);
var a = deepClone(arr);
a[2] = 4;
console.log(a);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值