高级js面试题及答案
一、单项选择题(每题2分,共20分)
1.以下哪个方法用于在数组末尾添加一个或多个元素?
A.pop
B.push
C.shift
D.unshift
答案:B
2.箭头函数内部的`this`指向什么?
A.全局对象
B.函数定义时的上下文
C.调用函数时的上下文
D.永远为`null`
答案:B
3.以下哪种数据类型是基本数据类型?
A.Object
B.Array
C.Number
D.Function
答案:C
4.`let`和`const`声明的变量有什么特点?
A.没有块级作用域
B.有块级作用域
C.可以在声明前访问
D.都是全局变量
答案:B
5.以下哪个方法用于将字符串转换为数字?
A.`parseInt`
B.`toString`
C.`toFixed`
D.`join`
答案:A
6.以下关于`async/await`的说法正确的是?
A.`async`函数返回一个`Promise`
B.`await`只能在普通函数中使用
C.`async`函数不能返回值
D.`await`可以处理非`Promise`对象
答案:A
7.以下哪个事件会在页面加载完成后触发?
A.`DOMContentLoaded`
B.`load`
C.`resize`
D.`scroll`
答案:B
8.以下哪种方式创建对象会共享原型?
A.字面量方式
B.`Object.create`
C.构造函数方式
D.`class`类方式
答案:B
9.以下哪个方法用于浅克隆一个对象?
A.`Object.assign`
B.`JSON.parse`
C.`JSON.stringify`
D.`Object.freeze`
答案:A
10.以下哪个属性用于获取元素的样式?
A.`style`
B.`className`
C.`getAttribute`
D.`innerHTML`
答案:A
二、多项选择题(每题2分,共20分)
1.以下哪些属于数组的迭代方法?
A.`map`
B.`filter`
C.`reduce`
D.`forEach`
答案:ABCD
2.以下哪些是`JavaScript`的内置对象?
A.`Date`
B.`Math`
C.`RegExp`
D.`Set`
答案:ABCD
3.以下哪些事件属于鼠标事件?
A.`click`
B.`mouseover`
C.`mousedown`
D.`mouseout`
答案:ABCD
4.以下哪些属于函数的定义方式?
A.函数声明
B.函数表达式
C.箭头函数
D.`class`类中的方法
答案:ABC
5.以下哪些方法可以改变数组的长度?
A.`push`
B.`pop`
C.`splice`
D.`slice`
答案:ABC
6.以下哪些属于`ES6`的新特性?
A.`let`和`const`声明变量
B.`class`类
C.`Promise`
D.`for...of`循环
答案:ABCD
7.以下哪些是`JSON`的方法?
A.`JSON.parse`
B.`JSON.stringify`
C.`JSON.keys`
D.`JSON.values`
答案:AB
8.以下哪些属于事件委托的优点?
A.提高性能
B.减少事件绑定
C.动态添加元素也能触发事件
D.代码更简洁
答案:ABCD
9.以下哪些是`JavaScript`中的错误类型?
A.`SyntaxError`
B.`ReferenceError`
C.`TypeError`
D.`RangeError`
答案:ABCD
10.以下哪些方法用于处理字符串?
A.`substring`
B.`substr`
C.`indexOf`
D.`replace`
答案:ABCD
三、判断题(每题2分,共20分)
1.`null`和`undefined`是相等的。()
答案:×
2.`map`方法会改变原数组。()
答案:×
3.`const`声明的常量一旦赋值,就不能再重新赋值。()
答案:√
4.`JavaScript`是一门面向对象的编程语言,基于原型链实现继承。()
答案:√
5.`for...in`循环主要用于遍历对象的可枚举属性。()
答案:√
6.`async`函数内部可以使用`await`处理多个`Promise`。()
答案:√
7.`add