1. 函数中的 arguments 是数组吗?若不是,如何将它转化为真正的数组
var func = function() {
console.log(Array.from(arguments))
console.log([...arguments])
console.log([].slice.call(arguments));
}
func();
2、写出以下代码的输出顺序,考察javascript的运行机制,宏任务和微任务。
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
promise2
async1 end
setTimeout
还有最新V8和旧版本V8展示结果不一样promise2 和async1 end略有互换
3、实现一个节流函数
var lastTime = 0;
var func = function(gapTime) {
var nowTime = new Date().getTime();
if(nowTime - lastTime > gapTime || !lastTime) {
lastTime = nowTime ;
search();
}
}
var search = function() {
//
}
$("#id").on("click", function() {
func(1000);
})
4、实现记录某个函数被调用的次数,使用闭包实现
function getTime () {
var time = 0;
return function() {
return ++time;
}
}
var func1 = getTime();
func1();
func1();
5、实现函数实现完全随机排序
function sort() {
var result = [];
var arr = [1, 2, 3, 324, 4, 5, 6, 7, 8, 9, 10, 23, 12, 65];
while(arr.length) {
var index = Math.floor(Math.random() * arr.length);
result.push(arr[index]);
arr.splice(index, 1);
}
return result;
}
console.log('result::', sort());
6、打印结果,考察== 和转换
if([]==false){console.log(1)};
if({}==false){console.log(2)};
if([]){console.log(3)}
if([1]==[1]){console.log(4)}
网友评论