今天,我爱编程网小编为关注前端开发的同学们准备了web前端开发js面试宝典 前端面试题-JS篇,下面一起来看一下吧。
有哪些经典的 Web 前端或者 JavaScript 面试笔试题
、定项选择题 (每题3共30)
1. 声明象给加name属性show显示其name值代码确( D )
A. var obj = [name:"zhangsan",show:function(){alert(name);}];
B. var obj = {name:zhangsan,show:alert(this.name)};
C. var obj = {name:zhangsan,show:function(){alert(name);}};
D. var obj = {name:zhangsan,show:function(){alert(this.name);}};
2. 关于Array数组象说确( CD )
A. 数组数据排序用sort函数排序效非预期给sort函数加排序函数参数
B. reverse用于数组数据倒序排列
C. 向数组位置加新元素用pop
D. unshift用于向数组删除第元素
3. 要页面状态栏显示已经选该文本框列JavaScript语句确( A )
A. window.status=已经选该文本框
B. document.status=已经选该文本框
C. window.screen=已经选该文本框
D. document.screen=已经选该文本框
4. 点击页面按钮使打新窗口加载网页JavaScript代码行( AD )
A. button value=new
onclick=open(‘new.html’, ‘_blank’)/>
B. button value=new
onclick=window.location=’new.html’;/>
C. button value=new
onclick=location.assign(‘new.html’);/>
D. _blankaction=new.html>
submit value=new/>
5. 使用JavaScript向网页输
hello
代码行( BD )
A. text/javascript>
document.write(
hello
);
B. text/javascript>
document.write(
hello
);
C. text/javascript>
hello
D.
text/javascript>
document.write(hello);
6. 析面代码:
text/javascript>
function writeIt (value) { document.myfm.first_text.value=value;}
#ffffff>
myfm>
text name=first_text>
text name=second_text>
说确( CD )
A. 页面第二文本框输入内容鼠标离第二文本框第文本框内容变
B. 页面第文本框输入内容鼠标离第文本框第二文本框复制第文本框内容
C. 页面第二文本框输入内容鼠标离第二文本框第文本框复制第二文本框内容
D. 页面第文本框输入内容鼠标离第文本框第二文本框内容变
7. 面JavaScript语句( D )实现检索前页面表单元素所文本框并全部清空
A. for(vari=0;i< form1.elements.length;i++) {
if(form1.elements.type==text)
form1.elements.value=";}
B. for(vari=0;i
if(forms[0].elements.type==text)
forms[0].elements.value=";
}
C. if(document.form.elements.type==text)
form.elements.value=";
D. for(vari=0;i
for(var j=0;j
if(document.forms.elements[j].type==text)
document.forms.elements[j].value=";
}
}
8. 表单(form1)文本框元素(fname)用于输入电号码格式:010-82668155要求前3位010紧接-面8位数字要求提交表单根据述条件验证该文本框输入内容效性列语句( A )能确实现功能
A. var str= form1.fname.value;
if(str.substr(0,4)!=010-|| str.substr(4).length!=8 ||
isNaN(parseFloat(str.substr(4))))
alert(效电号码);
B. var str= form1.fname.value;
if(str.substr(0,4)!=010- && str.substr(4).length!=8 &&
isNaN(parseFloat(str.substr(4))))
alert(效电号码);
C. var str= form1.fname.value;
if(str.substr(0,3)!=010-|| str.substr(3).length!=8 ||
isNaN(parseFloat(str.substr(3))))
alert(效电号码);
D. var str= form1.fname.value;
if(str.substr(0,4)!=010-&& str.substr(4).length!=8 &&
!isNaN(parseFloat(str.substr(4))))
alert(效电号码);
9. 关于则表达式声明6位数字邮编代码确( C )
A. var reg = /\d6/;
B. var reg = \d{6}\;
C. var reg = /\d{6}/;
D. var reg = new RegExp(\d{6});
10. 关于JavaScriptxml处理说明确( BCD )
A. Xml种扩展标记语言格式更规范作未html替代
B. Xml般用于传输存储数据html补充两者目同
C. JavaScript解析处理xml数据浏览器同其做同
D. IE浏览器处理xml首先需要创建ActiveXObject象
二、问答题
1. 列举浏览器象模型BOM用至少4象并列举window象用至少5 (10)
象:Window document location screen history navigator
:Alert() confirm() prompt() open() close()
2. 简述列举文档象模型DOMdocument用查找访问节点并做简单说明 (10)
Document.getElementById 根据元素id查找元素
Document.getElementByName 根据元素name查找元素
Document.getElementTagName 根据指定元素名查找元素
三、程序题
1、补充按钮事件函数确认用户否退前页面确认关闭窗口; (10)
text/javascript >
function closeWin(){
//处添加代码
if(confirm(确定要退)){
window.close();
}
}
buttonvalue=关闭窗口onclick=closeWin()/>
2、写简单描述html标签(带属性始标签结束标签)则表达式并字符串html标签除掉(15)
var str = div
面段落
;
//
text/javascript>
varreg = /<\/?\w+\/?>/gi;
varstr = div
面段落
;
alert(str.replace(reg,"));
3、完foo()函数内容要求能够弹框提示前选第几单选框(10)
Content-Type content=text/html;charset=utf-8″ />
text/javascript >
function foo() {
//处添加代码
var rdo =document.form1.radioGroup;
for(var i =0 ;i
if(rdo.checked){
alert(您选择第+(i+1)+单选框);
}
}
}
form1″ >
radio name=radioGroup/>
radio name=radioGroup/>
radio name=radioGroup/>
radio name=radioGroup/>
submit/>
4、完函数showImg()要求能够态根据拉列表选项变化更新图片显示 (15)
text/javascript >
function showImg (oSel) {
//处添加代码
var str = oSel.value;
document.getElementById(pic).src= str+.jpg;
}
picsrc=img1.jpgwidth=200″ height=200″ />
sel>
img1>城市
img2>都市早报
img3>青山绿水
2021前端面试题-JS篇
```
当查找一个对象的某个属性时,会先从它自身的属性上查找,
如果找不到的话会从它的_proto_属性上查找,就是这个构造函数的prototype属性,
如果还没找到就会继续在_proto_上查找,直到最顶层,找不到则为undefined,
像这样一层一层去查找形成一个链式的称为原型链
```
new一个函数,中间发生了什么
1.开辟一个内存空间,也就是创建一个空对象,obj={}或obj=new Object()
2.将这个新对象的_proto_属性指向它构造函数的prototype
3.将构造函数this绑定为这个新对象,在空对象上挂在属性和方法(call或apply方式)
4.返回这个新对象
相同:都是改变函数上下文this指向
不同:bind返回的是一个函数,不会立即执行
传参的不同 apply第二个参数为数组形式
call apply都是对函数的直接调用
1.作为普通函数直接调用,this指向window
2.作为对象方法去调用的话,this指向调用它的这个对象
3.箭头函数,没有this,this取决于外层离它最近的非箭头函数的this
4.构造函数的this,指向创建这个构造函数的实例对象
1.词法作用域(静态作用域)
js采用的就是词法作用域
只有函数可以限定作用域
函数允许函数访问外层作用域的变量
函数在定义的时候决定了函数作用域,词法作用域关心函数在何处被定义
2.动态作用域
函数在调用的时候决定了函数作用域,动态作用域关心函数在何处被调用
变量取值会到创建这个变量的函数作用域中去查找,如果找不到会向上查找,直到查找到全局作用域,这就形成了一个作用域链
1.节流
2.防抖
1.原型链继承
2.构造函数继承
3.组合继承(原型链继承+构造函数继承)
4.原型式继承
5.寄生继承
6.组合寄生继承
定义在一个函数内部的函数,这个内部函数有权访问外部函数作用域的变量
优点:
缺点:
js在运行中的任务,有一套收集,排队,执行的特殊机制,这种机制就是事件循环
遇到同步事件直接执行,遇到异步事件分为宏任务和微任务
如果微任务列表里有任务,先执行微任务再执行宏任务
块级作用域 暂时性死区 能否被修改
没有this call apply方法修改this无效
没有prototype属性
没有argument
不能使用new 不能用作构造函数,会报错
持续更新中.......
我爱编程网
2020年Web前端面试题汇总(一)
今天小编要跟大家分享的文章是关于2020年Web前端面试题汇总。由于内容较多小编分开为大家介绍,今天首先来和小编一起看一看第一部分的内容,希望这些面试题能够对正准备找Web前端相关工作的小伙伴们有所帮助。
1.说几条写JavaScript的基本规范?
1)不要在同一行声明多个变量;
2)请使用===/!==来比较true/false或者数值;
3)使用对象字面量替代newObject这种形式;
4)减少使用全局函数,全局变量;
5)switch语句必须带有default分支;
6)if语句必须使用大括号;
7)for-in循环中的变量;
应该使用var关键字明确限定作用域;
从而避免作用域全局污染。
2.说说平衡二叉树?
平衡二叉搜索树(Self-balancingbinarysearchtree)
又被称为AVL树。
具有以下性质:
1)它是一棵空树或它的左右两个子树
的高度差的绝对值不超过1,
并且左右两个子树都是一棵平衡二叉树。
2)平衡二叉树必定是二叉搜索树,反之则不一定。
3)平衡二叉树的常用实现方法有红黑树、AVL、
替罪羊树、Treap、伸展树等。
最小二叉平衡树的节点的公式如下:
F(n)=F(n-1)+F(n-2)+1备注:1是根节点,
F(n-1)是左子树的节点数量,
F(n-2)是右子树的节点数量。
3.清除浮动和解决垂直外边距重叠的解决方案?
问题描述:
1)父元素没有设置宽高,尺寸由子元素撑起;
子元素一旦浮动,父元素高度会发生塌陷。
2)子元素设置margin-top会作用的父元素的margin-top;
此时会造成垂直外边距重叠。
.clearfix::after,.clearfix::before{
content:'';
display:table;
clear:both;
}
4.sessionStorage、localStorage和cookie?
相同点:
都用于浏览器端存储的缓存数据;
不同点:
1)存储内容是否发送到服务器端
当设置了Cookie后,数据会发送到服务器端,
造成一定的宽带浪费;xxxstorage则会将数据保存
到本地,不会造成宽带浪费;
2)数据存储大小不同
Cookie数据不能超过4K,适用于会话标识;
xxxstorage数据存储可以达到5M;
3)数据存储的有效期限不同
cookie只在设置了Cookid过期时间
之前一直有效,即使关闭窗口或者浏览器;
sessionStorage,仅在关闭浏览器之前有效;
localStorage,数据存储永久有效;
4)作用域不同
cookie和localStorage是在同源同窗口中
都是共享的;
sessionStorage不在不同的浏览器窗口
中共享,即使是同一个页面;
5.判断一个单词是否是回文?
回文是指把相同的词汇或句子,
在下文中调换位置或颠倒过来,
产生首尾回环的情景,
叫做回文,也叫回环。
比如cacac,redivider。
letcheckPalindrom=(str)=>{
returnstr===
str.split('').reverse().join('');
}
6.不借助临时变量,进行两个整数的交换?
输入a=3,b=1,
输出a=1,b=3
letswap=(a,b)=>{
b=b-a;
a=a+b;
b=a-b;
return[a,b];
}
7.请写出至少5个html5新增的标签,并说明其语义和应用场景?
section:定义文档中的一个章节;
nav:定义只包含导航链接的章节;
header:定义页面或章节的头部;
它经常包含logo、页面标题和导航性的目录。
footer:定义页面或章节的尾部;
它经常包含版权信息、法律信息链接和反馈建议用的地址。
aside:定义和页面内容关联度较低的内容,
如果被删除,剩下的内容仍然很合理。
8.get和post请求在缓存方面的区别?
get请求类似于查找的过程,用户获取数据,
可以不用每次都与数据库连接,所以可以使用缓存。
post不同,post做的一般是修改和删除的工作,
所以必须与数据库交互,所以不能使用缓存。
因此get请求适合于请求缓存。
9.如何解决异步回调地狱?
promise、generator、async/await
10.图片的懒加载和预加载?
预加载:提前加载图片,
当用户需要查看时可直接
从本地缓存中渲染。
懒加载:懒加载的主要目的
是作为服务器前端的优化,
减少请求数或延迟请求数。
两种技术的本质:
两者的行为是相反的,
一个是提前加载,
一个是迟缓甚至不加载。
懒加载对服务器前端有一定
的缓解压力作用,
预加载则会增加服务器前端压力。
11.bind,apply,call的区别?
通过apply和call改变函数的this指向,
这两个函数的第一个参数都是一样的,
表示要改变指向的那个对象,
第二个参数,apply是数组,
而call则是arg1,arg2...这种形式。
通过bind改变this作用域
会返回一个新的函数,
这个函数不会马上执行。
12.js怎么控制一次加载一张图片,加载完后再加载下一张?
方法一:
varobj=newImage();
obj.src="#/21.jpg";
obj.onload=function(){
document.getElementById("pic")
.innnerHTML="
";
}
加载中
以上就是我爱编程网小编为大家带来的web前端开发js面试宝典 前端面试题-JS篇,希望对大家有帮助,了解更多相关资讯请关注我爱编程网。