2024年最新JS面试题汇总(九),2024年最新最新BAT大厂面试者整理的Web前端面试题目模板

常用的JavaScript设计模式

  • 单体模式

  • 工厂模式

  • 例模式

函数

var foo = “abc\123”; // foo的值为"abc\123"

console.log(re.test(foo)); //true

console.log(reg.test(foo)); //true

如上面的代码中可以看到,使用正则表达式字面量表示法时式子显得更加简短,而且不用按照类似类(class-like)的构造函数方式思考。

其次,在当使用构造函数的时候,在这里要使用四个反斜杠才能匹配单个反斜杠。这使得正则表达式模式显得更长,更加难以阅读和修改。正确来说,当使用 RegExp()构造函数的时候,不仅需要转义引号(即"表示"),并且通常还需要双反斜杠(即\表示一个\)。

使用 new RegExp()的原因之一在于,某些场景中无法事先确定模式,而只能在运行时以字符串方式创建。

👓参考

✨83. js 中 callee 与 caller 的作用

参考答案:

1. caller 返回一个调用当前函数的引用 如果是由顶层调用的话 则返回 null

(举个栗子哈 caller 给你打电话的人 谁给你打电话了 谁调用了你 很显然是下面 a 函数的执行 只有在打电话的时候你才能知道打电话的人是谁 所以对于函数来说 只有 caller 在函数执行的时候才存在)

var callerTest = function() {

console.log(callerTest.caller);

};

function a() {

callerTest();

}

a(); //输出function a() {callerTest();}

callerTest(); //输出null

2. callee 返回一个正在被执行函数的引用 (这里常用来递归匿名函数本身 但是在严格模式下不可行)

callee 是 arguments 对象的一个成员 表示对函数对象本身的引用 它有个 length 属性(代表形参的长度)

var c = function(x, y) {

console.log(arguments.length, arguments.callee.length, arguments.callee);

};

c(1, 2, 3); //输出3 2 function(x,y) {console.log(arguments.length,arguments.callee.length,arguments.callee)}

✨84. 异步加载 js 的方法

参考答案:

方案一: <script> 标签的 async="async"属性(详细参见:script 标签的 async 属性)

点评:HTML5 中新增的属性,Chrome、FF、IE9&IE9+均支持(IE6~8 不支持)。此外,这种方法不能保证脚本按顺序执行。

方案二: <script> 标签的 defer="defer"属性

点评:兼容所有浏览器。此外,这种方法可以确保所有设置 defer 属性的脚本按顺序执行。

方案三:动态创建 <script> 标签

示例:

点评:兼容所有浏览器。

方案四:AJAX eval(使用 AJAX 得到脚本内容,然后通过 eval_r(xmlhttp. responseText)来运行脚本)

点评:兼容所有浏览器。

方案五:iframe 方式(这里可以参照:iframe 异步加载技术及性能 中关于 Meboo 的部分)

点评:兼容所有浏览器。

✨85. 去除数组重复成员的方法

参考答案:

方法 1 扩展运算符和 Set 结构相结合,就可以去除数组的重复成员

// 去除数组的重复成员

[…new Set([1, 2, 2, 3, 4, 5, 5])];

// [1, 2, 3, 4, 5]

方法 2

function dedupe(array) {

return Array.from(new Set(array));

}

dedupe([1, 1, 2, 3]); // [1, 2, 3]

方法 3(ES5)

function unique(arry) {

const temp = [];

arry.forEach(e => {

if (temp.indexOf(e) == -1) {

temp.push(e);

}

});

return temp;

}

✨86. 去除字符串里面的重复字符

参考答案:

最简单的方式

[…new Set(“ababbc”)].join(“”); // “abc”

✨87. 求数组的最大值

前端资料汇总

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。
找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。
最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值