前端面试题整理—JavaScript篇(一)紫诺花开

1、JS的基本数据类型和引用数据类型有哪些,两者区别

基本数据类型->string、number、Boolean、null、undefined、symbol

引用数据类型->array、object、function

基本数据类型是保存在栈内存中,操作的是值,改变源数据不会影响新的变量

引用数据类型保存在堆内存中,操作的是地址,改变其中一个会影响另一个

2、数据类型中为假的有哪些?

false(布尔型)

0(数值型)

null(定义空的或者不存在,现在没有,将来可能有)

undefined(未定义,一直不存在)

NaN(不是一个有效数字)

空字符串(空字符串,字符类型)

3、举例JavaScript的基本规范,以及如何编写高性能代码

基本规范

1)代码缩进,建议使用“四个空格”缩进

2)语句结束使用分号

4)以大写字母开头命名构造函数,全大写命名常量

5)使用ID最好先获取一下

6)规范定义JSON对象,补全双引号

1)遵循严格模式:"usestrict";

2)将js脚本放在页面底部,加快渲染页面

3)尽量减少使用闭包

4)尽量使用直接量创建对象和数组

5)尽量减少对象成员嵌套

6)最小化重绘(repaint)和回流(reflow)

4、JS有哪些内置对象

Object、Array、Boolean、Number、String、Function、Arguments、Math、Date、RegExp

ES6新增对象:Symbol、Map、Set、Promises、Proxy

5、怎么实现string和number的相互转换

String转换成Number:Number()、parseInt()、parseFloat()

Number转换成String:String()、toString()

6、怎么创建、添加、替换、克隆、删除元素

创建->document.createElement('标签名')添加->parent.appendChild()parent.insertBefore(新插入的元素,老元素)替换->replaceChild(new,old)克隆->cloneChild()删除->removeChild()

7、什么情况下会转为字符串

1)基于alert、confirm、document.write等输出内容时,会先把值转为字符串后在输出

2)基于'+'进行字符串拼接时

3)把复合类型值转换数字时候。首先会转换字符串然后再转为数字

4)给对象设置属性名时候,如果不是字符串先转为字符串,然后在作为属性存储到对象中(对象属性只能是字符串和数字)

5)手动调用toString、toFixed(将Number四舍五入为指定小数位数的数字)、join、String方法时候,也是为了转换字符串

8、获取对象属性[]和.的区别

.后面的是这个对象的属性,凡是用.的地方都可以用[]

[]中括号的内容可以是字符串也可以是变量,基本上[]放的是变量

9、null和undefined的区别

Null:代表空对象指针。现在没有,将来可能会有

undefined:空,未定义。现在没有,将来也不会有(Js中独有的数据类型)

10、检测数据类型的几种方式,以及他们的对比

typeof、instanceof、constructor、Object.prototype.toString.call()

typeof只针对基本数据类型,遇到引用数据类型是不起作用的(无法细分对象)

instanceof用来判断对象和函数,不适合判断字符串和数字

constructor是Object其中的一个属性。默认指向实例的构造函数

通过Object.prototype.toString方法,判断某个对象值属于哪种内置类型

11、in与hasOwnProperty

两者都代表查看某个属性是不是自己的

in判断的是对象的所有属性,包括对象实例及其原型的属性

hasOwnProperty则是判断对象实例的是否具有某个属性

12、innerHTML和innerText区别

innerHTML可以获取结构和文本

innerText只获取文本内容

13、如何清除一个定时器

clearTimeout(timer)

14、说一下倒计时原理及公式

letd=Math.floor(t/86400);t%=86400;leth=Math.floor(t/3600);t%=3600;letm=Math.floor(t/60);t%=60;

15、何时使用===何时使用==

判断对象的属性是否存在可以使用双等,其余都用全等

===更严谨,不仅值相等类型也要相等,不用进行类型转换,并且比==速度快

16、eval是做什么的?

它的功能是把对应的字符串解析成JS代码并运行

由JSON字符串转换为JSON对象的时候可以用eval('('+str+')');

应避免使用eval,因为不安全,耗性能

17、数组常用的一些方法有哪些

push()向数组末尾添加数据pop()删除数组最后一项unshift()向数组首位添加新内容shift()删除数组的第一项slice()按照条件查找出其中的部分内容splice()对数组进行增删改join()用指定的分隔符对数组拼接concat()用于连接两个或多个数组indexOf()/lastIndexOf()当前值在数组中第一次/最后一次出现的位置索引includes()判断一个数组是否包含指定的值sort()对数组进行排序reverse()把数组倒过来排列forEach()循环遍历数组每一项

18、说一下什么是DOM映射机制

通过DOM中方法获取到的元素,与页面一一对应的这种关系称之为DOM映射

querySelectorAll获取到的元素集合没有DOM映射,必须是元素的内置属性发生变化,浏览器才能监听得到

19、一行代码实现数组去重

[...newSet([1,2,3,4])]

20、节点类型都有哪些,如何判断当前节点类型

1元素节点,2属性节点,3文本节点,8注释节点、9文档节点

通过nodeObject.nodeType判断节点类型,其中,nodeObject为节点对象

该属性返回以数字表示的节点类型,例如,元素节点返回1,属性节点返回2

21、重绘和回流(重排)区别,什么情况会触发重排和重绘

当页面元素(宽高,位置)发生改变,回导致页面重排,浏览器会根据新位置进行重新渲染

回流必将引起重绘,而重绘不一定会引起回流。重绘相对于回流性能消耗较低

任何改变用来构建渲染树的信息都会导致一次重排或重绘

比如添加、删除、更新DOM节点,通过display:none隐藏,调整样式属性,调整窗口大小,滚动等等

22、如何最小化重绘(repaint)和回流(reflow)

1)需要对元素进行复杂的操作时,可以先display:none隐藏,操作完再显示

2)需要创建多个DOM节点时,使用DocumentFragment创建完后一次性的加入document

3)尽量避免用table布局

4)避免使用css表达式(expression),每次调用都会重新计算值(包括加载页面)

5)尽量使用css简写,如:用border代替border-width,border-style,border-color

23、什么是自执行函数,用于什么场景

自执行函数,即定义和调用合为一体,比如匿名函数自执行

他可以创建一个独立作用域,防止作用域污染,防止变量影响到全局,以免产生冲突

多用于框架和插件

24、改变this指向的方法

call、apply、bind

call和apply可以自动执行,bind需要手动调用,返回值为函数

call和bind都有无数个参数,apply只有两个参数,并且第二个为数组

25、iframe的优缺点

优点:

1)iframe能够原封不动的把嵌入的网页展现出来

2)头部和底部一样时可以写成一个页面,用iframe来嵌套,可以增加代码的可重用

3)引用多个页面,只需要修改iframe的内容,就可以实现页面内容的更改

缺点:

26、类数组转数组的方法

Array.from

Array.prototype.slice.call

[].slice.call

27、请解释什么是暂时性死区

28、严格模式与非严格模式的区别

非严格模式又被被称为懒散模式

严格模式usestrict是一种ECMAscript5添加的运行模式,这种模式使得Js在更严格的条件下运行,使JS编码更加规范化

消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为。

在严格模式下,arguments和eval是关键字,不能被修改

在严格模式下,函数的形参也不可以同名

手机号码验证

^[A-Za-z]\w{3,17}@[1-9A-Za-z]{2,8}\.(com|cn|net)$

30、window和document常见的方法和属性

Window对象常见的属性:

top代表当前所有窗口的最顶层窗口parent指当前窗口的父窗口self指当前窗口status指定当前窗口状态栏中的信息

Window对象常见的方法:

alert显示带有一个“确定”按钮的对话框confirm显示带有“确定”和“取消”两个按钮的对话框open打开一个新的窗口close关闭用户打开的窗口

Document常见属性:

title设置文档标题,也就是html的标签bgColor设置页面的背景色URL设置url属性fileSize文件大小

Document常见的方法:

write()动态向页面写入内容createElement(Tag)创建一个HTML标签getElementById(ID)获得指定id的对象getElementsByName(Name)获得之前Name的对象

31、如何添加HTML元素的事件,有几种方法

标签之中直接添加onclick="fn()"

JS添加btn.onclick=method

绑定事件obj.addEventListener('click',method,false)

32、使用js去除字符串空格

str.trim()

使用replace正则匹配:str.replace(/\s*/g,"")

33、什么是闭包,有什么优缺点

在Js中当函数套函数,子函数使用了父函数的参数或者变量,并且子函数被外界所使用(没有释放),

此时父函数的参数和变量,是不会被浏览器垃圾回收机制立马收回,这个时候父级形成了闭包环境。

functionfn(){leta=10;returnfunction(){console.log(a);}}letf=fn();console.dir(f);//控制台中的closure就代表闭包优点:

保护—闭包会形成私有作用域,保护里面的私有变量不受外界干扰

存储—闭包可以把父函数的参数或变量存储起来

相对于普通函数要消耗内存,闭包使用不当将会在IE(IE9之前)中造成内存泄漏

34、理解的JavaScript垃圾回收机制

垃圾回收机制主要有两种方法:

1、标记清除法

打开页面时,先把所有的变量打上标记,然后把被使用的变量清除标记。如果下次查询之前标记的没有被引用,此时就回收

2、引用计数法

变量每用一次就记录一次,一开始为0,下次引用+1,每少用一次就-1。当变为0时候就清空回收

直接给变量赋值一个null的地址可以解决闭包消耗的内存

35、什么情况会引起内存泄漏,产生原因及解决方案?

1)意外的全局变量引起的内存泄漏

原因:全局变量,不会被回收

解决:可以使用严格模式避免

2)闭包引起的内存泄漏

原因:闭包可以维持函数内局部变量,使其得不到释放

解决:将事件处理函数定义在外部,解除闭包,或者在定义事件处理函数的外部函数中,删除对dom的引用

3)没有清理的DOM元素引用

原因:虽然别的地方删除了,但是对象中还存在对dom的引用

解决:手动删除即可

4)忘记的定时器或者回调

原因:定时器中有dom的引用,即使dom删除了,但是定时器还在

解决:手动清除定时器和dom

36、什么是原型,什么是原型链,两者关系

原型(prototype):函数自带的属性,函数的实例化对象找不到某个属性或者方法,一定会去构造函数的原型下去找

原型链(__proto__):实例化对象身上自带一个属性

原型关系链:函数的实例化对象找不到某个属性或方法,一定会去构造函数的原型下去找,如果还没有会去原型下的原型链查找,直到找到Object.prototype为止

两者关系:实例化对象的原型链===构造函数的原型

37、如何合并两个数组

//第一种vararr1=[1,2,3];vararr2=[4,5,6];arr1=arr1.concat(arr2);console.log(arr1);//第二种vararr1=[1,2,3];ararr2=[4,5,6];Array.prototype.push.apply(arr1,arr2);console.log(arr1);

38、简述this出现的情况

1)全局下的this是window2)单纯的函数名+括号执行,this是window3)匿名函数自执行,this是window4)定时器中的this是window5)事件触发,触发谁this就是谁6)对象方法中,.前面是谁this就指向谁7)构造函数中this是实例化对象8)严格模式下this是undefined9)箭头函数中this指向上一级10)箭头函数中this暴露在外面就指向window

40、说一下对变量提升的理解

41、Js有哪些解决异步的方案

1)callback回调函数2)promise3)事件监听4)asyncawait

42、new之后发生了什么

使用new之后不用加括号一样会执行函数new之后this变为实例化对象默认返回值就不是undefined而是实例化对象写了return,如果return后面是简单类型,返回结果依然是实例化对象,如果是复合类型,返回结果则是这个复合类型

43、写一个原生的xhr请求过程,readystate的几种状态分别什么含义?

letxhr=newXMLHttpRequest();xhr.open('get','./package.json');xhr.onreadystatechange=function(){if(xhr.readyState==4&&xhr.status==200){letresult=JSON.parse(xhr.responseText);console.log(result.name)}};xhr.send()readyState的几种状态

0:请求未初始化(此时还没有调用open)1:服务器连接已建立,已经发送请求开始监听2:请求已接收,已经收到服务器返回的内容3:请求处理中,解析服务器响应内容4:请求已完成,且响应就绪

44、什么是作用域、作用域链

作用域分为全局作用域、局部作用域(包括es6新增块级作用域)

简单理解作用域就是一个独立的空间,让变量不会暴露。不同作用域下同名变量不会冲突

当前作用域未定义的变量(自由变量)会向父级作用域查找,如果父级没有再一层层往上找,直到全局作用域,这种一层层的关系称为作用域链

45、浅拷贝和深拷贝,实现的几种方式

浅拷贝只复制某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存

深拷贝会开辟一个新的栈,新对象跟原对象不共享内存,修改新对象不影响原对象

简单来说假如B复制了A,当修改A时候B如果跟着改变就是浅拷贝,B没有改变则为深拷贝

浅拷贝实现方式:

Object.assign()、Array.prototype.concat()、Array.prototype.slice()

深拷贝实现方式:

JSON.parse(JSON.stringify())、手写递归、jquery的$.extend

47、说一下变量提升机制

关于变量提升:无论条件成不成立都会先进行预解析匿名函数不会预解析es6不存在变量提升预解析的函数只解析一次(再遇到就会跳过)

48、平时怎么样进行数据交互如果后台没有提供数据怎么进行开发?mock数据与后台返回的格式不统一怎么办?

由后台编写接口文档、提供数据接口实、前台通过ajax访问实现数据交互;

在没有数据的情况下寻找后台提供静态数据或者自己定义mock数据

返回数据不统一时编写映射文件对数据进行映射

49、什么是回调函数

回调函数callback,就是一个函数执行完后立刻执行另一个

它与箭头函数不一样的是,它会拿返回的值作为参数

50、什么是构造函数?与普通函数有什么区别

构造函数:是一种特殊的方法、主要用来创建对象时初始化对象,总与new运算符一起使用。创建对象的语句中构造函数的函数名必须与类名完全相同

与普通函数相比只能由new关键字调用,构造函数是类的标示

51、ajax和jsonp区别

相同点:都是请求一个url

不同点:ajax的核心是通过xmlHttpRequest获取内容

jsonp的核心则是动态添加

THE END
1.“法”字有三种写法最后一种你见过东亚书法硬笔书法“法”字有三种写法最后一种你见过2024-12-10 11:53:39 新谈影视 四川 举报 0 分享至 0:00 / 0:00 速度 洗脑循环 Error: Hls is not supported. 视频加载失败 新谈影视 1011粉丝 嘴瓢解说,有趣就好 12:42 能击落飞机的坦克? 00:48 涉事公司通报火箭坠落爆炸详情,当地市民:在十几公里外都https://www.163.com/v/video/VFI45TQAK.html
2.刑法的立法解释有哪几种?中华人民共和国最高人民法院黑龙江省高级人民法院中国裁判文书网鸡西市中级人民法院网密山市法院网鸡西市鸡冠区人民法院网虎林市法院网鸡西市鸡东县法院网鸡西市城子河区法院网鸡西市滴道区法院网鸡西市麻山区法院网鸡西市梨树区法院http://jxhs.hljcourt.gov.cn/public/detail.php?id=24332
3.点痣有哪几种方法?痛不痛?不过随着社会的发展,现在黑痣已经不能够再威胁到女性朋友们了,都是有去除的方法的,那么点痣的方法有哪几种呢?点痣会不会痛呢?让我们一起看以下医生的答案。 1、化学灼烧法 解释:有药水“洗痣”和液氮“冻痣”。所谓的“点痣水”其实是用药水腐蚀皮肤,使痣的皮肤组织坏死,然后脱落。液氮祛痣也是类似“烧灼”的https://health.baidu.com/m/detail/ar_13347783712053845464?data_from=lemon
4.国家司法考试《国际私法》讲义:国际私法名词解释由于知识产权具有严格的地域性,长时期来认为知识产权只应适用各项知识产权授予国的法律,现在已有很大改变,大致有以下几种主张: 1.原始国法律说(即原始取得国法律法); 2.被请求保护国法律说; 3.知识产权侵权行为地法说; 4.综合适用法律法说(即主张通过综合分析,区别不同的知识产权以及分别权利的取得或存在和效力http://www.110.com/ziliao/article-858839.html
5.民事诉讼法司法解释一事不再理的规定是什么导读:民诉法司法解释对一事不再理的适用条件及情形做出了规定。对判决、裁定、调解书已经发生法律效力的案件,当事人又起诉的,告知原告申请再审,但人民法院准许撤诉的裁定除外。当事人重复起诉的,裁定不予受理;已经受理的,裁定驳回起诉,但法律、司法解释另有规定的除外。 https://www.64365.com/zs/957689.aspx
6.正版抓码王11159c0n时代资料解释落实正版抓码王11159c0n 是一款备受欢迎的彩票选号工具,它以精准和效率受到广泛认可。在现代社会,越来越多人寻求通过各种方式来提高中奖的机会,而抓码王正是满足这一需求的最佳选择。 引言 正版抓码王11159c0n 是一款备受欢迎的彩票选号工具,它以精准和效率受到广泛认可。在现代社会,越来越多人寻求通过各种方式来提高https://www.wk8.com.cn/zidian/zi/6cd5/
7.索达吉堪布:俱舍问答第一品分别界品行:行即执著有所造作,如行善等。 由上可知,凡夫皆执此五蕴为我及我所。然而此五蕴唯是因缘聚合而成,是有为法。 21.有为法有哪几种别名?如何解释? 答:时间:以前的有为法已经过去,现在的正在流逝,将来的亦将流逝,由此显示了有为法的无常性及迁流性,故称为时间; http://wuming.xuefo.com/show2.asp?id=14151
8.比克斯《法理学》前三部分读书笔记肖尔:“回到奥斯丁“,非诠释的法律实证主义:①改造内在观点理论:以”审慎“守解释法行为,消除规范性②认为将自己的理论聚焦于相信法律强加了道德义务的公民和官员是不可信的【116-118】 四、凯尔森的纯粹法学 1.纯粹法学 两个基本论点【123】:①规范性主张只能以其他规范性主张为前提②论证的链条必须在某处终止→对https://book.douban.com/annotation/106847872/
9.国际经济法网换言之,受让人误信财产的承租人、借用人、管理人或使用人等是所有人或具有使用他人财产的权限。[3]若从生活意义、文学意义分析,“善意、恶意”的解释将千姿百态,但由于法学语言有特定含义,则需通过阅读、解析案例、进行研究性的理论分析方能拨云见日,深入本质,找到问题关键,正确理解和适用法律。https://ielaw.uibe.edu.cn/zyflrcjy/8709.htm
10.宪法解释的方法有哪些种类律师普法宪法解释的方法有哪些种类2020-01-27 2,197 普法内容宪法解释的方法种类: 1、文理解释。文理解释包括字面解释和语法解释。文理解释主要是从表现宪法规范的条文,根据字、词、以及句子结构、文字排列、标点符号等等,对宪法的内容、含义进行解释。 2、伦理解释。伦理解释包括逻辑解释、系统解释、历史解释、目的解释等等,https://www.110ask.com/tuwen/9642540628354814925.html
11.民事诉讼法时效司法解释一、民事诉讼法时效司法解释 民事诉讼时效的新司法解释根据《最高人民法院关于适用〈中华人民共和国民法总则〉诉讼时效制度若干问题的解释》第一条,民法总则施行后诉讼时效期间开始计算的,应当适用民法总则第一百八十八条关于三年诉讼时效期间的规定。 二、我国现行的诉讼法分为哪几种 https://www.findlaw.cn/124800/article_146756.html
12.三校名师:2006年司法考试测试卷一及答案c.《中华人民共和国国徽法》 d.《中华人民共和国律师法》 8、根据我国宪法,乡、民族乡、镇的人民代表大会每届任期几年?a.3年 b.4年 c.5年 d.6年 9、根据我国现行宪法和有关法律规定,下列有关行政区域划分,行政区域边界争议处理的主管部门的表述中,哪一种说法是正确的?a.行政区域边界争议的主管部门无权https://www.diyifanwen.com/kaoshizhuanti/sifakaoshishitiku/0761713085930716_649.htm
13.Java高频面试题JavaSpringCould中间件javajuc面试Mybatis 结果集的映射方式有几种,并分别解释每种映射方式如何使用? Spring (粘合剂) 谈谈你对Spring的理解 什么是IOC?如何理解?★★★ 什么是DI? 什么是AOP?如何理解? ★★★ spring中,bean的生命周期 ★★★ Bean的作用域有哪些? Spring中常用的设计模式 ★★ https://blog.csdn.net/a111042555/article/details/124286782
14.屌毛怎么读拼音是什么?屌毛是什么意思如何解释?屌毛是什么意思如何解释? 1、屌毛的意思是在某种场合中,一个人对另一个人做事做法上看不惯。觉得这人不谦虚太傲气一般会用到的词语,对人不尊重的语气词。意思可以理解为 :嚣张什么呢。很叼啊? 2、在广州方言中,“吊毛” 发音与西北方言“叼毛”的意思相同。http://m.weishan.cc/zhuanlan/zhuanlan/0818194650.html
15.2024事业单位工勤技能考试题库(含答案).pdf57.下面几种对事故的解释中,哪种最为正确? A.事故是造成伤亡的事故 B.事故是指意外的变故或灾祸 C.安全事故 D.工业故障 正确答案: B 58.职业道德有助于个人事业成功,对社会没有什么作用 正确答案: 错误 59.党的十八届四中全会提出,完善惩治贪污贿赂犯罪法 律制度,把贿赂犯罪对象由财物扩大为财物和其他财产https://www.renrendoc.com/paper/345748553.html