Web前端开发面试题,前端开发基础教程
问题一:两个打印的结果分别是什么?
var scope = "global";
function fn(){
console.log(scope);
var scope = "local";
console.log(scope);
}
fn();
解析:undefined scope
只要函数内定义了一个局部变量,函数在解析的时候都会将这个变量“提前声明”,等同于下面这样写:
var scope = "global";
function fn(){
var scope; //提前声明了局部变量
console.log(scope); //undefined
scope = "local";
console.log(scope); //local;
}
fn();
问题二:将数组扁平化并去重,最终得到一个升序且不重复的数组
var arr = [[1, 2, 2] [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
解析:[...new Set(arr.flat(Infinity))].sort((a, b) => a - b)
实现方法有很多,这里用一个相对最简单的方案,首先通过Array.prototype.flat()方法,传入Infinity将数组无限级降为一维数组,然后通过Set类型的不重复数据,将数组项去重,最后直接通过Array.prototype.sort方法将数组升序排列即可。