前端面试题JavaScript

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 前端面试题JavaScript

文章目录
前端面试题js篇
1、js的数据类型有哪些?
2、判断一个值类型的方法?
3、说说null和undefined
4、说下“===”和“==”的区别
5、eval是干什么的?
6、var 、let 、const的区别?
7、document.write和innerHTML的区别?
8、v-if和v-show的区别?
9、vue的生命周期是什么?
10、JSON的特点?
11、在JavaScript中( )方法可以对数组元素进行排序?(选择一项)
12、下列JS定义变量正确的是?
13、关于媒体查询,正确的媒体查询表示是?
14、document.onload和document.ready两个事件的区别?
15、JS如何重定向到另一个页面?
16、JS中的主要错误类型有?
17、如何通过类别名获取 dom 元素?
18、JS的作用域链是什么及其作用?
19、 列出JS中的一些设计模式:
20、如何在JavaScript中每x秒调用一个函数?
21、白屏时间first paint和可交互时间dom ready的关系是?
22、如果想为id值为button1的元素设置背景色为红色,下列选项中,做法正确的一项是?
23、以下哪个选项的描述是错误的?
24、关于AngularJS说法,错误的是?
25、下面这段JS程序的执行结果是:?
26、以下那个变量名是非法的? (选择二项)
27、关于javascript变量的声明与赋值,正确的有:)(选择三项)
28、下列语句中,不能够正确调用函数myFun的是: (选择一项)
29、下列选项中,对于Date对象的getMonth()方法返回值描述正确的是?(选择一项)
30、在HTML文档对象模型(HTML DOM)中,history对象的()方法用于加载历史列表中的下一个URL页面() (选择一项)
31、方法setTimeout(“move()”,20)的作用是?(选择一项)
32、setTimeout()和setInterval()的区别
33、分析下面的JavaScript代码段,输出结果是?(选择一项)
34、下列哪一个选项不属于document对象的方法(选择一项)
35、光标移到文本框上方时,文本框边框的颜色就改变,这是因为激发了下列的事件?(选择一项)
1、js的数据类型有哪些?
答:Number、Undefined、Null、String、Object、Boolean

2、判断一个值类型的方法?
答:typeof运算符,instanceof运算符,Object.prototype.toString

3、说说null和undefined
答:null表示一个对象已经被定义了,但是值为“空值”。
undefined表示这个值不存在,如:变量声明了,但是没有赋值,这时候就是undefined;调用有参函数时
没有提供参数,等等。

4、说下“===”和“==”的区别
答:“==”:判断是否相等,仅进行值得比较,不尽兴类型的判断。
如:1==“1”》true。
“===”:完全相等,一模一样才是true,判断类型。
如:1===“1”》false。

5、eval是干什么的?
答:eval可以将字符串解析成js可以执行的代码并且执行。eval会执行两次,一次将字符串解析成js可执行的代码,一次执行代码。

6、var 、let 、const的区别?
答:var有变量提升的功能,他可以把变量提升到作用域的最前面;
let不存在变量提升,只能作用域块级作用域。
const用于定义常量,已定义的变量不能再改变。

7、document.write和innerHTML的区别?
答:doucment.wirte绘制整个页面,在整个页面输出。
innerHTML在页面局部绘制,在局部输出。

8、v-if和v-show的区别?
答:v-if只有在值为true的时候才会渲染,他控制的是标签的存在与否,每次都会重建和销毁,-
v-if是惰性的;
v-show也有true和false两个值,但与v-if不同的是,v-show不会销毁标签,而是将标签隐藏起来,dispaly值为none。
v-show虽然首次加载开销较大,但是整体还是比v-if节省。

9、vue的生命周期是什么?
答:开始创建,初始化数据,编译模板,挂载Dom(渲染),更新(渲染),卸载。
或vue从创建开始到销毁的过程。beforCreate(),created(),beforMount(),mounted(),beforUpdate(),updated(),beforDestroy(),destroyed()

10、JSON的特点?
答:1、JSON是一种轻量级的数据交换格式。
2、易于人阅读和编写,同时,也易于机器解析和生成。
3、JSON采用完全独立于语言的文本格式。

11、在JavaScript中( )方法可以对数组元素进行排序?(选择一项)
A.add().
B.push().
C.reverse().
D.sort()

正确答案:D

12、下列JS定义变量正确的是?
A.var 1abcd_bac.
B.var my home.
C.var index.
D.var c$sb.
正确答案:D

13、关于媒体查询,正确的媒体查询表示是?
A.@media.
B.@meida.
C.@medai.
D.@madie.

正确答案:A

14、document.onload和document.ready两个事件的区别?
答:两个都是页面加载完成的事件。
reday表示的是文档结构已加载完成,但不包括图片、视频等非文字媒体资源;
onload表示的是页面包括图片视频的文件资源在内的所有元素加载完成。

15、JS如何重定向到另一个页面?
答:
①使用window.location.href:
window.location.href=“新页面的url地址”

②使用window.location.replace:
window.location.replace(“新的url地址”)

16、JS中的主要错误类型有?
答:
加载时的错误:加载web页面是出现的错误,比如语法错误等。
运行时的错误:滥用html语言中的命令所导致的错误。
逻辑错误:具有不同操作的函数执行不正确逻辑而出现的错误。

17、如何通过类别名获取 dom 元素?
答:
document.getElementsByClassName()方法可以获取具有类名的元素。
需要注意的是:此方法获得的是一个类数组,不可以直接使用,使用时需要具体到个数。

18、JS的作用域链是什么及其作用?
答:
一般情况下,变量取值在创建这个变量的函数的作用域下取值。但是当这个变量在当前作用域没有取到值时,就会向上一级作用域去查找值,直到查到全局变量,这样一个过程形成的链条就叫做作用域链。

19、 列出JS中的一些设计模式:
设计模式是软件设计中常见问题的通用可重用解决方案,以下是一些设计模式是:
创建模式:该模式抽象了对象实例化过程。
结构型模式:这些模式处理不同的类和对象以提供新功能。
行为模式:也称发布-订阅模式,定义了一个被观察者和多个观察者的、一对多的对象关系。
并行设计模式:这些模式处理多线程编程范例。
架构设计模式:这些模式用于处理架构设计。

20、如何在JavaScript中每x秒调用一个函数?
答:可以使用计时器setInter()来完成。

setInterval(function(){
执行内容。
},单位ms);
1
2
3
21、白屏时间first paint和可交互时间dom ready的关系是?
A.先触发first paint ,后触发dom ready
B.先触发dom ready,后触发first paint
C.一起触发
D.没关系

正确答案:A

解析:
白屏时间first paint time:从字面意思上看就是第一次绘制的时间。指的是页面从打开开始到有东西开始呈现出来的这段时间。
可交互时间dom ready:可交互指的就是用户可以对浏览的界面进行操作。可交互时间,用户的正常点击、输入等操作都默认统计为可交互时间dom ready。

先有才能操作,所以前者比后者先触发。

22、如果想为id值为button1的元素设置背景色为红色,下列选项中,做法正确的一项是?
A.document.getElementById(‘button1’).style.backgroundColor=“red”;
B.document.getElementById(‘button1’).style.backgroundcolor=“red”;
C.document.getElementById(‘button1’).style.backGroundColor=“red”;
D.document.getElementById(‘button1’).style.bgcolor=“red”;

正确答案:A

解析:使用js修改元素的css样式时,具体样式需要使用驼峰命名法。

骆驼式命名法(Camel-Case): 又称驼峰式命名法,是电脑程式编写时的一套命名规则(惯例)。正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。(来自百度百科:驼峰命名法)

简单的说就是,在JS中写入css样式时,原css样式存在中横线“-”的要将中横线去掉,中横线后面的第一个字母大写。如:“font-size“ ==》“fontSize”。

23、以下哪个选项的描述是错误的?
A.iframe是用来在网页中插入第三方页面,早期的页面使用iframe主要是用于导航栏这种很多页面都相同的部分,这样在切换页面的时候避免重复下载。
B…iframe的创建比一般的DOM元素慢了1-2个数量级。
C.iframe标签会阻塞页面的的加载。
D.iframe本质是动态语言的Incude机制和利用ajax动态填充内容。

正确答案:D

解析:
1、创建比一般的 DOM 元素慢了 1-2 个数量级
iframe 的创建比其它包括 scripts 和 css 的 DOM 元素的创建慢了 1-2 个数量级,使用 iframe 的页面一般不会包含太多 iframe,所以创建 DOM 节点所花费的时间不会占很大的比重。但带来一些其它的问题:onload 事件以及连接池(connection pool)

2、阻塞页面加载
及时触发 window 的 onload 事件是非常重要的。onload 事件触发使浏览器的 “忙” 指示器停止,告诉用户当前网页已经加载完毕。当 onload 事件加载延迟后,它给用户的感觉就是这个网页非常慢。

window 的 onload 事件需要在所有 iframe 加载完毕后(包含里面的元素)才会触发。在 Safari 和 Chrome 里,通过 JavaScript 动态设置 iframe 的 SRC 可以避免这种阻塞情况

3、唯一的连接池
浏览器只能开少量的连接到 web 服务器。比较老的浏览器,包含 Internet Explorer 6 & 7 和 Firefox 2,只能对一个域名(hostname)同时打开两个连接。这个数量的限制在新版本的浏览器中有所提高。Safari 3+ 和 Opera 9+ 可同时对一个域名打开 4 个连接,Chrome 1+, IE 8 以及 Firefox 3 可以同时打开 6 个

绝大部分浏览器,主页面和其中的 iframe 是共享这些连接的。这意味着 iframe 在加载资源时可能用光了所有的可用连接,从而阻塞了主页面资源的加载。如果 iframe 中的内容比主页面的内容更重要,这当然是很好的。但通常情况下,iframe 里的内容是没有主页面的内容重要的。这时 iframe 中用光了可用的连接就是不值得的了。一种解决办法是,在主页面上重要的元素加载完毕后,再动态设置 iframe 的 SRC。

4、不利于 SEO
搜索引擎的检索程序无法解读 iframe。另外,iframe 本身不是动态语言,样式和脚本都需要额外导入。综上,iframe 应谨慎使用。
来自牛客大佬:https://www.nowcoder.com/test/question/done?tid=59499133&qid=369917#summary

24、关于AngularJS说法,错误的是?
A.前端mvc,极大降低前端开发的耦合。
B.极大的丰富了dom操作。
C.实现了数据双向绑定。
D.实现了依赖注入。

正确答案:B

解析:Angular大大减少了对DOM的访问。 jQuery极大的丰富了DOM操作。

25、下面这段JS程序的执行结果是:?
var user = {
count : 1,
getCount: function(){
return this.count;
}
}
var func = user.getCount
console.log(func())
1
2
3
4
5
6
7
8
A.this.count
B.1
C.报错
D.undefined

参考答案: D

解析:
1.调用对象未声明的属性会undifned
var user={};
console.log(user.name);//undifned

// 2.使用未赋值只声明的基本数据类型会undifned
var one;
console.log(one);//undifned
// 3.使用未声明的变量会报错
console.log(two);//new_file.html:15 Uncaught ReferenceError: two is not defined
1
2
3
4
5
在本题中,this指向的是window,window对象已经自动被浏览器声明了,只是还没有声明count属性,所以也是undifned。

因为func=user.getCount只是保存了getCount函数,并没有执行,该函数是在console里面执行,func()就相当于user.getCount(),一看是像user调用,其实func()就相当于一个全局的函数,实际上是window.func() ,也就是window.user.getCount()。

自牛客大佬:https://www.nowcoder.com/test/question/done?tid=59500810&qid=326124#summary

26、以下那个变量名是非法的? (选择二项)
A. numb_1
B. 2numb
C. function
D. _d2$f

参考答案:B,C

27、关于javascript变量的声明与赋值,正确的有:)(选择三项)
A. var count = 10;
B. var x,y,z=10;
C. int a=10,b=10;
D. x=80;

参考答案:A,B,D

28、下列语句中,不能够正确调用函数myFun的是: (选择一项)
A.
B.
C.
D. myFun()

参考答案:D

29、下列选项中,对于Date对象的getMonth()方法返回值描述正确的是?(选择一项)
A. 返回系统时间的当前月
B. 返回值范围介于1~12之间
C.返回系统时间的但前月+1
D.返回值范围介于0~11之间

参考答案:D

30、在HTML文档对象模型(HTML DOM)中,history对象的()方法用于加载历史列表中的下一个URL页面() (选择一项)
A. next()
B. back()
C.forword()
D.go(-1)

参考答案:C

31、方法setTimeout(“move()”,20)的作用是?(选择一项)
A. 每隔20秒, move()函数会被调用一次.
B. 20秒后, move()函数会被调用一次.
C.每隔20毫秒, move()函数会被调用一次.
D.20毫秒后, move()函数会被调用一次.

参考答案:D

32、setTimeout()和setInterval()的区别
答:
setTimeout只运行一次,也就是说设定的时间到后就触发运行指定代码,运行完后即结束;
而setinterval
是一直循环运行下去,即每到设定时间间隔就触发指定代码,要想停止,需要使用clearInterval()函数。

33、分析下面的JavaScript代码段,输出结果是?(选择一项)
var s1=parseInt(“101中学”);
document.write(“s1”);
a) NaN
b) 101中学
c) 101
d) 出现脚本错误

参考答案:C

34、下列哪一个选项不属于document对象的方法(选择一项)
A. focus()
B. getElementById()
C.getElementsByName()
D.bgColor()

参考答案:D

35、光标移到文本框上方时,文本框边框的颜色就改变,这是因为激发了下列的事件?(选择一项)
A. onFocus
B. onMouseUp
C.onMouseOver
D.onMouseMove

参考答案:C
————————————————

目录
相关文章
|
5天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
|
16天前
|
存储 JavaScript 前端开发
前端技术分享:使用Vue.js与Vuex管理状态
【10月更文挑战第1天】前端技术分享:使用Vue.js与Vuex管理状态
38 6
|
16天前
|
JavaScript 前端开发 开发者
前端技术分享:Vue.js 中的自定义指令
【10月更文挑战第1天】前端技术分享:Vue.js 中的自定义指令
46 5
|
5天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
17 0
|
6天前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
58 41
|
1天前
|
前端开发 JavaScript 安全
JavaScript前端开发技术
JavaScript(简称JS)是一种广泛使用的脚本语言,特别在前端开发领域,它几乎成为了网页开发的标配。从简单的表单验证到复杂的单页应用(SPA),JavaScript都扮演着不可或缺的角色。
10 3
|
8天前
|
JavaScript 前端开发 API
Vue.js:打造高效前端应用的最佳选择
【10月更文挑战第9天】Vue.js:打造高效前端应用的最佳选择
11 2
|
8天前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
5天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
38 0
|
5天前
|
前端开发 JavaScript 程序员
【从前端入门到全栈】Node.js 之核心概念
【从前端入门到全栈】Node.js 之核心概念