行业知识
2024年前端最新笔试百题,web开发教程
- 下列代码结果为 true 的是?
A. Symbol.for(‘a’) === Symbol.for(‘a’)
B. Symbol(‘a’) === Symbol(‘a’)
C. NaN === NaN
D. {} === {}
- 根据如下变量,下列表达式中返回值为true的是
var a = 1;
var b = [];
var c = ‘’;
var d = true;
A. (a || b) === true
B. (b && c) === true
C. (c && d) === true
D. (d || a) === true
- 1==true的返回值是true,这句话是否正确?
A. T
B. F
- 下面代码输出为true的是?
A. console.log([] === []);
B. console.log(undefined == 0);
C. console.log(undefined == false);
D. console.log(false == ‘’);
- 以下打印结果为true的是
A. console.log(“12” === 12)
B. console.log (NaN === NaN)
C. console.log (typeof(null) === typeof(window))
D. console.log ([1,2,3] === [1,2,3])
- 以下表达式,正确的是
A. Number(‘a’) == Number(‘a’)
B. -1 == true
C. 3 + ‘2’ === 5
D. ![] == ‘’
答案
CADADCD
Math
- 如何把 7.25 四舍五入为最接近的整数
A. Math.round(7.25)
B. Math.ceil(7.25)
C. Math.floor(7.25)
D. Math.rnd(7.25)
- 下面哪个选项可以产生0preturn nums.indexOf(n) === i/p p})/p p// (3)/p pconst newNums = nums.forEach((n, i) => {
return nums.indexOf(n) === i
})
// (4)
const newNums = nums.reduce((acc, n, i) => {
return [].concat(acc, nums.indexOf(n) === i ? n : []
)
})
A. (1)、(2)、(3)、(4)
B. (1)、(3)、(4)
C. (1)、(2)、(4)
D. (1)、(4)
答案
BAABB
BBC
正则
- 正则表达式 d+[d]+ 能匹配下列哪个字符串?
A. 123
B. 123a
C. d123
D. 123def
- 下面哪个不是RegExp对象的方法
A. test
B. match
C. exec
D. compile
- 以下哪项可以去除变量str中的所有空格
A. str.replace(/\s*/g,"")
B. str.replace(/^\s|\s$/g,"")
C. str.replace(/^\s*/, "")
D. str.replace(/(\s*$)/g, "")
答案
CBA
其他
- 下列函数哪个不是JavaScript的全局函数
A. encodeURI
B. parseFloat
C. round
D. eval
- 编写高性能JavaScript,以下描述错误的是
A. 遵循严格模式:“use strict”
B. 将js脚本放在页面顶部,加快渲染页面
C. 将js脚本成组打包,减少请求,尽量减少使用闭包
D. 使用非阻塞方式下载js脚本,最小化重绘(repaint)和回流(reflow)
- 有关JavaScript中系统方法的描述,错误的是?
A. parseFloat方法:该方法将一个字符串转换成对应的小数
B. isNaN方法:该方法用于检测参数是否为数值型,如果是,返回true,否则,返回false。
C. escape方法: 该方法返回对一个字符串编码后的结果字符串
D. eval方法:该方法将某个参数字符串作为一个JavaScript执行题
- 下面列出的浏览器,无webkit内核的是()
A. chrome
B. Safari
C. 搜狗浏览器
D. Firefox
- 下列代码哪个能够实现获取形式为 2017-08-01 形式的日期( )?
// A
var formatDate=getDate()
// B
var formatDate = new Date()
// C
var formatDate = function (date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
return y + ‘-’ + m + ‘-’ + d;
};
// D
var formatDate = function (date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m
var d = date.getDate();
d = d
return y + ‘-’ + m + ‘-’ + d;
};
- 如何最小化重绘(repaint)和回流(reflow)
A. 需要对元素进行复杂的操作时,可以先隐藏(display:“none”),操作完成后再显示
B. 需要创建多个DOM节点时,使用DocumentFragment创建完后一次性的加入document
C. 尽量避免用table布局(table元素一旦触发回流就会导致table里所有的其它元素回流)
D. 尽量不要使用 css 属性简写,如:用border-width, border-style, border-color代替border
答案
CBBDD
深入题
this
- 下列哪种方法不能改变this指向()
A. eval
B. apply
C. bind
D. call
- 在JavaScript中下面选项关于this描述正确的是
A. 在使用new实例化对象时, this指向这个实例对象
B. 将对象的方法赋值给变量A。执行A()时 该方法中的this指向这个对象。
C. 在函数定义时,this指向全局变量
D. 在浏览器下的全局范围内,this指向全局对象
- 下面有关JavaScript中call和apply方法的描述,错误的是?
A. call与apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性
B. 两者传递的参数不同,call函数第一个参数都是要传入给当前对象的对象,apply不是
C. apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入
D. call传入的则是直接的参数列表。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
答案
AAB
作用域(闭包)
- 内存泄漏是 javascript 代码中必须尽量避免的,以下几段代码可能会引起内存泄漏的有()
// (1)
function getName() {
name = ‘javascript’
}
getName()
// (2)
const elements = {
button: document.getElementById(‘button’)
};
function removeButton() {
document.body.removeChild(elements.button);
}
removeButton()
// (3)
let timer = setInterval(() => {
const node = document.querySelector(‘#node’)
if(node) {
clearInterval(timer)
}
}, 1000);
A. (1)、(2)、(3)
B. (2)、(3)
C. (1)、(3)
D. (1)、(2)
- 那个操作不会造成内存泄露
A. 没有清理的DOM元素引用
B. 被遗忘的定时器
C. 事件侦听没有移除
D. 局部变量不用时,没有设为null
- 下列关于闭包理解错误的是
A. 增加一定的内存消耗
B. 使用不当可能会导致内存泄漏
C. 可以使用闭包模拟私有方法
D. 闭包会改动对象的原型链
答案
DDD
原型与继承
- JavaScript实现继承的方式,不正确的是:
A. 原型链继承
B. 构造函数继承
C. 组合继承
D. 关联继承
- 所有对象都有原型
A. T
B. F
- 以下关于原型链的描述正确的是:
A. 通过原型链继承的属性和对象自己定义的属性等效
B. 通过原型链可以模拟对象的私有属性
C. 在对象上访问不存在的属性时,会依次遍历整条原型链
D. 所有 JavaScript 中的对象都是位于原型链顶端的 Object 的实例
答案
DBC
其他
- 以下不属于前端数据存储方式的是?
A. jsonp
B. cookie
C. localStorage
D. sessionStorage
答案
A
DOM题
事件流
- 将A元素拖拽并放置到B元素中,B元素需要做哪项操作()?
A. event.preventDefault()
B. event.prevent()
C. event.drag()
D. event.drop()
- 以下不支持冒泡的鼠标事件为( )?
A. mouseover
B. click
C. mouseleave
D. mousemove
- 在javascript中,用于阻止默认事件的默认操作的方法是
A. stopDeafault()
B. stopPropagation()
C. preventDefault()
D. preventDefaultEven()
- 事件传播的三个阶段是什么
目标 -> 捕获 -> 冒泡
冒泡 -> 目标 -> 捕获
目标 -> 冒泡 -> 捕获
捕获 -> 目标 -> 冒泡
- 下面有关 javascript 常见事件的触发情况,描述错误的是?
A. onchange:用户改变域的内容
B. onkeypress:某个键盘的键被按下或按住
C. onmousedown:某个鼠标按键被按下
D. onblur:元素获得焦点
答案
ACCDD
DOM遍历
- 下列哪项不属于DOM查找节点的属性()?
A. parentObj.firstChild
B. parentObj.children
C. neborNode.previousSibling
D. neborNode.siblings
- DOM中,给父节点添加子节点的正确方法为()?
A. appendChild(parentNode,newNode);
B. append(parentNode,newNode);
C. parentNode.append(newNode);
D. parentNode.appendChild(newNode);
- JavaScript中document.getElementById()返回值的类型为?
A. Array
B. Object
C. String
D. Function
- DOM中,给父节点添加子节点的正确方法为()?
A. appendChild(parentNode,newNode);
B. append(parentNode,newNode);
C. parentNode.append(newNode);
D. parentNode.appendChild(newNode);
答案
DDBD
其他
- DOM元素的以下属性改变会导致重排(reflows)的是
outline
visiblity
font-size
background-color
答案
C
BOM题
- setInterval(updateClock,60)的含义是( )?
A. 每隔60秒调用一次updateClock()
B. 每隔60毫秒调用一次updateClock()
C. 每隔60分钟调用一次updateClock()
D. 每分钟调用60次updateClock()
- 使用方法( )可以获取到地理位置所在的经纬度?
A. Geolocation.watchPosition()
B. Geolocation.getCurrentPosition()
C. Geolocation.getPosition()
D. Geolocation.Position()
- setInterval(“alert(‘welcome’);”,1000);这段代码的意思是
A. 等待1000秒后,再弹出一个对话框
B. 等待1秒钟后弹出一个对话框
C. 每隔一秒钟弹出一个对话框
D. 语句报错,语法有问题
答案
BBC
ES6题
箭头函数
- 下列对js箭头函数描述错误的是()
A. 箭头函数没有原型属性
B. 箭头函数不绑定this,会捕获其所在的上下文的this值,作为自己的this值
C. 箭头函数可以作为构造函数,使用new
D. 箭头函数不绑定arguments,取而代之用rest参数解决
- 关于箭头函数下列说法错误的一项是:
A. 函数体内this的指向是定义时所在的对象,而不是使用时所在的对象
B. 箭头函数内不能使用arguments对象
C. 箭头函数不能使用yield命令
D. 可以使用new创建一个箭头函数的实例
答案
CD
promise
- 关于将 Promise.all 和 Promise.race 传入空数组的两段代码的输出结果说法正确的是:
Promise.all([]).then((res) => {
console.log(‘all’);
});
Promise.race([]).then((res) => {
console.log(‘race’);
});
A. all 和 race 都会被输出
B. all 和 race 都不会被输出
C. all 会被输出,而 race 不会被输出
D. all 不会被输出,race 会被输出
- 以下方案中,不是用于解决回调陷阱的的是:
A. Promise
B. Generator
C. async
D. Proxy
- 在 ECMAScript6 中,不属于promise的状态是:
A. Pending
B. Pause
C. Fulfilled
D. Rejected
答案
CDB
解构赋值
- 关于ES6解构表达式,描述正确的是()
let [a,b, c,d, e] = “hello”;
A. e = “hello”;
B. 其它都为undefined
C. 当中 a = “h”, b = “e”;
D. 语法报错
答案
C
多选题
JS基础
- 下面哪些数组方法会改变原数组
A. push
B. concat
C. splice
D. map
- 下面可以声明数字的js代码是
A. const a = 0xa1
B. const a = 076
C. const a = 0b21
D. const a = 7e2
- 以下属于操作符 typeof 的返回值的是:
(1)function
(2) object
(3) null
(4) array
(5) NaN
(6) bigint
(7) regexp
(8) undefined
A. (1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)
B. (1)、(2)、(3)、(8)
C. (1)、(2)、(8)
D. (1)、(2)、(6)、(8)
- 以下()结果等于字符串string
A. typeof ‘string’
B. String(‘string’).toString()
C. ‘string’.split(‘’).sort().join(‘’)
D. (function(string){return string})(‘string’)
E. JSON.parse(‘{“string”:“string”}’).string
- 下面的等式成立的是?
A. parseInt(46.8) == parseFloat(46.8)
B. NaN !== NaN
C. isNaN(‘abc’) == NaN
D. typeof NaN === ‘number’
- 以下哪些选项可以将集合A转化为数组?
A. Array.from(A)
B. [].slice.apply(A)
C. […A]
D. [].map.call(A, o => o)
- 下列结果返回 true 的是
A. null == undefined
B. null === undefined
C. null === null
D. NaN == null
E. NaN === NaN
F. Infinity + 1 !== Infinity
答案
AC ABD D ABDE BD ABCD AC
JS深入
- 关于以下代码,说法正确的有哪些?
function Person() { }
var person = new Person();
A. 每一个原型都有一个constructor属性指向关联的构造函数。
B. 每一个对象都有一个prototype属性。
C. Object.getPrototypeOf(person) === Person.prototype
D. person.constructor === Person
- 下列在 JS 时间循环机制中属于微任务(microTask)的是?
A. process.nextTick
B. promise
C. setTimeout
D. setInterval
答案
ACD AB
ES6
- 以下关于let和const的说法中正确的是:
A. let声明的变量值和类型都可以改变
B. const声明的常量不可以改变
C. 两者都不存在变量提升,同时存在暂时性***区,只能在声明的位置后面使用
D. const可以先声明再初始化,可以后赋值
- 下面关于Promise说法正确的是(注意“返回结果”的意思包含成功或者失败)
A. Promise.all在所有给定的promise都fulfilled后才返回结果
B. Promise.race在给定的promise中,某个fulfilled后才返回结果
C. promise.then的回调函数中,可以返回一个新的promise
D. 对于一个向后台获取数据已经产生结果的promise:p1,再次调用p1.then,不会去重新发起请求获取数据
答案
ABC CD
DOM
- 下列关于使用 JS 修改元素样式的代码,正确的有哪些?
document.body.style.[‘background-color’] = ‘#fff’
document.body.style.setProperty(‘background-color’, ‘#fff’)
document.body.style = ‘background-color’: #fff’
document.body.style.fontSize = ‘14px’
- 下列方法可用于阻止事件冒泡的有
A. event.cancelBubble = true;
B. event.stopPropagation();
C. event.preventDefault();
D. return false;
答案
BCD ABD
填空题
类型检测
-
在JavaScript中,有var arr = []; typeof arr的结果为
-
以下使用 typeof 操作符的代码的输出结果为
var x = typeof x
var res = typeof typeof x;
console.log(x, res)
-
[typeof null, null instanceof Object]的结果是什么
-
typeof typeof 0
-
JavaScript的typeof运算符的可能结果为array?解释为什么
-
下面代码的输出结果是多少?
var arr = [];
console.log(typeof arr, Object.prototype.toString.call(arr));
- console.log(Object.prototype.toString.call(undefined))
类型转换
-
表达式 “2”+3+4 的值为
-
console.log(‘5’ + 3, 5 + ‘3’)
-
var a=parseInt(“111办公室”);alert(a);
-
[“0x1”, “0x2”, “0x3”].map(parseInt) 的结果
-
在js中执行 1+'1’的结果是?
-
在js中执行 parseInt(‘77’,40)的结果是?
逻辑判断
-
请给出 [5
上一篇:推特下载与注册完整指南