高级前端面试题 2022
2022年前端面试题加答案
1.javascript基本数据类型?
string,number,null,underfined,boolean object是所有对象的父对象。
2、浅谈javascript中变量和函数声明的提升?
变量和函数声明的提升会被提升到最顶部去执行;函数的提升高于变量的提升;如果在函数内部用var声明了与外部相同的变量,则不向下寻;匿名函数不会被提升;不同块中互不影响。
3、什么是闭包?闭包有什么特性?
闭包就是能够读取其他函数内部变量的函数。
闭包的特性:函数内部可以嵌套函数;内部函数可以直接访问外部函数的参数和变量;参数和变量不会被垃圾回收机制回收。
4、说说对比包的理解和闭包的作用?使用闭包就是为了设置私有变量和方法。
闭包的好处:能够实现封装和缓存;闭包的坏处:就是内存消耗,使用不当可能会造成内存溢出的问题。
5、说说this对象的理解?
this总是指向直接调用者;如果有new关键字,则指向new出来的那个对象;在事件中,this指向触发这个事件的对象,特殊的是,在IE中的attachEvent中的this总是指向全局对象window。
6、事件模型的理解?
冒泡型事件:当使用冒泡型事件时,子级元素先触发,父级元素后触发。捕获型事件:当使用捕获型事件时,父级元素先触发,子级元素后触发。
7.new操作符具体做了干了什么?
创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型;属性和方法被加
入到this引用的对象中;新创建的对象由this所引用,并且最后隐式地返回this。
8、说说堆和栈的区别?
栈内存:存储的都是局部变量,后进先出,栈内存的更新速度很快,因为局部变量的声明周期都很短。
堆内存:存储的都是数组和对象,堆里面的实体不会被释放,但是会被当成垃圾,java有垃圾回收机制不定时地收取。
9,JS数组和对象的追历方式,以及几种方式的比较。
for循环——循环每进行一次,就要检查一下数组的长度,速度比较慢;for in循环-需要分析出array的每一个属性,这个操作性能开销很大。
forEach循环--不能遍历对象,不可以使用continue,break跳出循环,且使用return是跳出本次循环。
nodejs字符串转数组10,map与forEach的区别?
forEach是最基本的循环,默认有三个参数:array,item,index;map的用法和forEach基本一致,不同的是它会返回一个数组,所以callback需要有return值,如果没有,会返回underfined。
11、说说箭头函数与普通函数的区别?
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象;不可以当作构造函数,也就是说不能使用new关键在,否者会抛出一个错误;不可以使用arguments对象,该对象在函数体内不存在。如果要使用,可以用Rest参数代替;不可以使用yield命令,因此箭头函数不能当作Generator函数。
12.javascript定义类的四种方法
工厂方法、构造函数方法、原型方法、组合使用构造函数和原型方法。
13.javascript实现继承的三种方法?
借用构造函数法、对象冒充、组合继承。
14、对原生javascript的了解程度?
数据类信、运算、对象、Function、继承、闭包、作用域、原型链、事件、RegExp,JSON、Ajax、DOM、BOM、内存泄露、跨域、异步装载、模板引擎、前端MVC、路由、模块化、Canvas、ECMAScript.
15,JS动画与CSS动画区别及其相应实现?
CSS3的动画优点:在性能上稍微好一点,浏览器会对CSS3的动画进行一些优化;代码相对简单。
缺点:兼容性差;在动画上控制不够灵活。
javascript的动画正好弥补了这两个缺点。在实现一些小的效果的时候,尽量使用css3。
16、谈一谈你对“函数式编程”的理解?
简单来说,函数式编程是一种编程规范,也就是如何编写程序的方法论。
17、说说你对作用域链的理解?
作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的。
18.javascript原型、原型链是什么?有什么特点?
每个对象都在其内部初始化一个属性、就是prototype(属性),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性。
那么它就会去prototype里去这个属性,这个prototype又有自己的prototype,于是就这样一直下去,也就是我们平时所说的原型链。
关系:structor.prototype= instance.proto
19,说说什么是事件代理?
事件代理又称之为事件委托。就是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。
20、说说ajax的原理?
Ajax的原理简单来说就是在用户和服务器之间加了一个中间层(Ajax引Y),由XmlHttpRequest对象来向服务器发异步请求,从服务器获取数据,然后用javascript来操作DOM而更新页面。
21、说说如何解决跨域问题?
通过jsonp跨域;通过document.domain+iframe跨域;nginx跨域;nodejs中间件代理跨域;后端在头部信息里面设置安全域名解决跨域。
22、异步加载JS的方式有哪些?
defer,只支持IE;async;创建,插入到DOM中,加载完毕后callBack。
23、有哪些操作会导致内存泄漏?
setTimeout的第一个参数是字符串而非函数的话,会造成内存泄漏;闭包使用不当。
24、介绍JS有哪些内置对象?
数据封装类对象:Object、Array,Number,Boolean,Stringo其他对象:Function,Arguments,Math,Date,RegExp,Error
25、说几条写javascript的基本规范?
不要在同一行声明多个变量;使用===!==来判断true,false;尽量使用字面量代替new Array这种形式;不要使用全局函数;Switch语句必须带有default分支;if语句必须使用大括号;for-in循环中的变量应该使用var关键字明确限定作用域,从而避免作用域污染。
26,eval是做什么的?
eval可以把字符串解析成JS代码并运行;避免使用eval,不安全,非常消耗性能;把JSON字符串传换成JSON对象时可以使用eval。
27,null和underfined的区别?
null表示定义了一个对象,值为“空值”
underfined表示这个不存在这个值。
28、说说同步和异步的区别?
同步:在同一时间内不允许出现别的操作。
异步:在同一时间内允许不同的操作。
29,defer和async的区别?
defer:按顺序执行标签的顺序执行。
30,[1,2,3].map(parselnt)的输出结果是什么?
[1,NaN,NaN],因为parselnt需要两个参数(val,radix)。
31.use strict的理解和作用?
use strict是ES5新增的一种严格运行模式。可以使得JS代码在严格模式下运行,使得编码更加规范更加严谨,消除了一些怪异行为。
32、说说严格模式的限制?变量必须先声明后再使用;函数的参数不能出现同名属性,否则
报错:不能使用with语句;禁止this指向全局对象。
33、说说对JSON的理解?
JSON是一种轻量级的数据交换格式;基于javascript的一个子库,数据格式简单,易于读写,占用带宽小;JSON字符串可以转换成JSON对象;JSON对象可以转换成JSON字符串。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。