![be968e4588c0e281a856b7f6c61cce22.png](https://img-blog.csdnimg.cn/img_convert/be968e4588c0e281a856b7f6c61cce22.png)
Web面试题,Web前端面试题,开课吧Web前端
问题一:下面代码的输出结果是什么?
const arr = [1, 2, [3, 4, [5]]];
console.log(arr.flat(1));
A. [1, 2, [3, 4, [5]]];
B. [1, 2, 3, 4, [5]];
C. [1, 2, [3, 4, 5]];
D. [1, 2, 3, 4, 5];
解析:这里主要是考察Array.prototype.flat方法的使用,扁平化会创建一个新的,被扁平化的数组,扁平化的深度取决于传入的值;这里传入的是1也就是默认值,所以数组只会被扁平化一层,相当于[].concat([1,2], [3, 4, [5]]),故选B。
问题二:下面代码的输出结果是什么?
function sayHi() {
console.log(name);
console.log(age);
var name = 'Lydia';
let age = 21;
}
A. undefined 和 undefined;
B. Lydia 和 ReferenceError;
C. ReferenceError 和 21;
D. undefined 和 ReferenceError;
解析:本题的考点主要是var与let的区别以及var的预解析问题。var所声明的变量会被预解析,var name;提升到作用域最顶部,所以在开始的console.log(name)时,name已经存在,但是由于没有赋值,所以是undefined;而let会有暂时性死区,也就是在let声明变量之前,你都无法使用这个变量,会抛出一个错误,故选D。
问题三:判断一个给定的字符串是否是重构的。
解析:如果两个字符串是同构的,那么字符串 A 中所有出现的字符都可以用另一个字符替换,以便获得字符串B,而且必须保留字符的顺序。字符串 A 中的每个字符必须与字符串 B 的每个字符一对一对应。
paper 和 title 将返回 true。
egg 和 sad 将返回 false。
dgg 和 add 将返回 true。
isIsomorphic("egg", 'add'); // true
isIsomorphic("paper", 'title'); // true
isIsomorphic("kick", 'side'); // false
function isIsomorphic(firstString, secondString) {
// 检查长度是否相等,如果不相等, 它们不可能是同构的
if (firstString.length !== secondString.length) return false
var letterMap = {};
for (var i = 0; i < firstString.length; i++) {
var letterA = firstString[i],
letterB = secondString[i];
// 如果 letterA 不存在, 创建一个 map,并将 letterB 赋值给它
if (letterMap[letterA] === undefined) {
letterMap[letterA] = letterB;
} else if (letterMap[letterA] !== letterB) {
// 如果 letterA 在 map 中已存在, 但不是与 letterB 对应,
// 那么这意味着 letterA 与多个字符相对应。
return false;
}
}, , // 迭代完毕,如果满足条件,那么返回 true。
// 它们是同构的。
return true;
}
以上就是今天酷仔提供的Web面试题,以后酷仔每日均会提供Python及Web相关的习题,以上面试题内容由开课吧提供!