33道面向初中级前端的基础面试题(持续更新中)

本文汇总了针对初中级前端开发者的33道基础面试题,涵盖字符串空格处理、对象创建、null与undefined的区别、异步求和、模块化(CommonJS与ES module)、预加载与预获取(preload和prefetch)、脚本加载特性(preload、defer)、对象与Map的区别、WeakMap和WeakSet的原理、HTML5语义化以及CSS和JS标签的最佳实践。详细解答了每道题目,适合前端开发者准备面试使用。

参考资料:

9.请用js去除字符串空格

去除所有空格

str.replace(/\s/g, ‘’)

去除两边空格

str.replace(/^\s+|\s+$/g, ‘’)

// 原生方法

str.trim()

10.创建对象有几种方法

  • 字面量

const obj = {a: 1}

  • 构造函数

function Obj(val) {

this.a = val

}

const obj = new Obj(1)

  • Object.create

const obj = Object.create({a: 1})

11.null和undefined的区别

null 表示一个对象是“没有值”的值,也就是值为“空”

undefined 表示一个变量声明了没有初始化(赋值)

undefinednull 在if语句中,都会被自动转为false

undefined 不是一个有效的JSON,而 null

undefined 的类型(typeof)是 undefined

null 的类型(typeof)是 object

Javascript将未赋值的变量默认值设为 undefined

Javascript从来不会将变量设为 null。 它是用来让程序员表明某个用var声明的变量时没有值的

12.异步求和

要求

假设有一台本地机器,无法做加减乘除运算,因此无法执行 a + b、a+ = 1 这样的 JS 代码,然后我们提供一个服务器端的 HTTP API,可以传两个数字类型的参数,响应结果是这两个参数的和,这个 HTTP API 的 JS SDK(在本地机器上运行)的使用方法如下:

asyncAdd(3, 5, (err, result) => {

console.log(result); // 8

});

模拟实现:

function asyncAdd(a, b, cb) {

setTimeout(() => {

cb(null, a + b);

}, Math.floor(Math.random()*100))

}

现在要求在本地机器上实现一个 sum 函数,支持以下用法:

(async () => {

const result1 = await sum(1, 4, 6, 9, 1, 4);

const result2 = await sum(3, 4, 9, 2, 5, 3, 2, 1, 7);

const result3 = await sum(1, 6, 0, 5);

console.log([result1, result2, result3]); // [25, 36, 12]

})();

要求 sum 能在最短的时间里返回以上结果

实现

function asyncAdd(a, b, cb) {

setTimeout(() => {

cb(null, a + b);

}, Math.floor(Math.random()*100))

}

function sum(…args) {

const result = []

function _su

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值