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