![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试相关
文章平均质量分 86
小牲口online
。
展开
-
你应该掌握的浏览器相关知识
文章目录一.浏览器安全1. XSS攻击2. CSRF攻击3.有哪些可能引起的前端安全的问题二.浏览器缓存机制1.对缓存的理解2.浏览器缓存的分类强缓存协商缓存3.浏览器的缓存机制的全过程三.浏览器渲染原理1.浏览器渲染引擎的主要模块以及渲染过程3. style样式渲染4. link样式渲染5.阻塞渲染**关于CSS的阻塞**关于js的阻塞四.浏览器本地存储1. sessionStorage,LocalStorage和CookieCookieLocalStorageSessionStorage2.浏览器的跨页原创 2021-08-10 10:08:29 · 623 阅读 · 0 评论 -
你能手写一个Promise吗?
文章目录一.初始化Promise二.构造函数实现三.then函数的实现四. catch的实现五. Promise.reject的实现六. Promise.resolve的实现七. Promise.all方法八. Promise.race方法如果你想更加深入的了解Promise的使用以及它的内部机制,那不妨跟着我来手写一个Promise吧。一.初始化Promise首先我们应该清楚Promise的基本结构,Promise的原型方法以及函数对象本身的方法。then与catch是我们Promise构造函原创 2021-08-07 15:53:03 · 227 阅读 · 0 评论 -
CSS高频重点
1. CSS选择器以及优先级标签选择器、伪元素选择器:1类选择器、属性选择器、伪类选择器:10id选择器:100内联样式:1000注意:!important声明的样式优先级最高优先级相同时,最后出现的样式生效继承得到的样式优先级最低通用选择器(*)、子选择器(>)、相邻同胞选择器(+)并不在这四个等级中,所以它们的权值为02. display的属性值及其作用none:元素不显示,并且从文档流中移除该元素block:块类型,可设置宽高,换行显示(默认宽度为父元素宽度)inl原创 2021-08-03 23:20:10 · 214 阅读 · 0 评论 -
你应该掌握的前端性能优化面试点!
文章目录一.浏览器渲染原理1.浏览器渲染引擎的主要模块以及渲染过程3. style样式渲染4. link样式渲染5.阻塞渲染**关于CSS的阻塞**关于js的阻塞二. 重绘与重排1.什么是css图层2.图层创建的条件3.重绘4.重排(回流)5.常见的触发重排的操作6.关于重绘重排的优化方案7.requestAnimationFrame与定时器setTimeout的区别三. CDN1.CDN的概念2.CDN的作用3.CDN的使用常见四.防抖节流1.函数防抖2.函数节流五.懒加载1.懒加载的概念2.懒加载的实现原创 2021-07-16 00:24:34 · 281 阅读 · 1 评论 -
你需要注意的Javascript高频面试点
文章目录一.数据类型1. JavaScript有哪些数据类型,它们的区别?2. 数据类型的检测方式?3. 判断数组的方式有哪些?4. null和undefined的区别5.为什么null返回一个Object6.intanceof 操作符的实现原理及实现7. 为什么0.1+0.2 ! == 0.3,如何让其相等?8.如何获得安全的undefined值9.typeof NaN的结果是多少10.isNaN与Number.isNaN函数的区别11.==操作符的强制类型转换规则12.其他值转到string规则13.其原创 2021-07-08 19:00:42 · 722 阅读 · 10 评论 -
JavaScript面试:你可以手写一个new操作符吗?
要想知道new操作符的原理,就得先了解new的作用是什么,我们都知道,一般将我们的构造函数实例化为对象时就要使用new操作符。要想真正掌握并手写一个new,你需要掌握以下知识点:原型与原型链以及this绑定相关知识。其实new的内部流程十分简单,大概就是这么几个步骤:创建一个新的对象obj将对象的隐式原型指向构造函数的原型对象通过apply调用构造函数(改变this指向到obj)返回obj,如果构造函数有返回值还需判断,如果返回值为引用类型则返回引用类型对象,如果为原始类型就返回obj原创 2021-07-03 15:50:19 · 139 阅读 · 0 评论 -
JavaScript面试:手写bind/call/apply函数
1.手写call和apply函数手写call函数:步骤:1.判断第一个参数的类型2.将当前的函数作为传入对象的方法3.取出argument类数组的值4.执行obj.当前函数(newarugument),并保存返回值5.删除传入对象的方法6.返回返回值代码如下:Function.prototype.newCall = function (obj) { if (typeof obj != "object" || obj == null) { obj = window } ob原创 2021-07-03 15:48:26 · 163 阅读 · 0 评论 -
回望Javascript:ES6
1.let,var ,const的区别回答这个问题要从一下几个方向去回答:1.块级作用域:let和const具有块级作用域,var不存在块级作用域的概念。块级作用域解决了ES5的两个问题:内层变量可能覆盖外层变量和循环时泄露循环变量为全局变量2.变量提升:var 存在变量提升,let和const不存在变量提升(只能在声明后使用),涉及到上下文的概念3.给全局添加属性:在全局window下,var声明的变量是全局变量,并将变量添加到全局对象的属性上,而let和const不会。4.重复声明:var可以原创 2021-07-03 15:46:16 · 151 阅读 · 0 评论 -
回望Javascript:一些Js基础
文章目录1.JS访问内部数据变量的方式与哪些以及使用场景?2. Javascript函数调用的方式有哪四种?3.new操作符的实现原理4.数组有哪些原生的方法5.什么是DOM和BOM6.对类数组(伪数组)的的理解,如何转换为数组7.为什么要使用尾调用?8.for...in和for...of的区别9.对Ajax的理解,实现一个Ajax请求10.Ajax、axios和fetch的区别11.Javascript脚本延迟加载的方法有哪些?12.CommonJS和ES6模块的异同点?1.JS访问内部数据变量的方式与原创 2021-07-03 15:44:30 · 187 阅读 · 0 评论 -
回望Javascript:数据类型相关
1. JavaScript有哪些数据类型,它们的区别?Javascript有八种数据类型:Number,String,undefined,null,Boolean,Symbol,BigInt,Object。其中Symbol和BigInt是ES6中新增的数据类型:symbol代表创建后独一无二且不可变的数据类型,主要是为了解决可能出现的全局变量冲突的问题BigInt是一种数字类型的数据,它可以表示任意精度格式的整数,适用BigInt可以安全的存储和操作大整数,即使这个数已经超过了Number能够表示原创 2021-07-03 15:41:52 · 179 阅读 · 0 评论 -
回望Javascript:原型与原型链
文章目录1.原型对象上的constructor指向哪里2.显示原型与隐式原型3.谈一谈原型与原型链4.Function,Object与原型的关系5.原型链指向题目6.探索instanceOf(手写instanceof)7.两道面试题1.原型对象上的constructor指向哪里每个函数都有一个prototype属性,这是一个引用,指向了函数的原型对象,每个原型对象都有一个constructor属性,这个属性指向函数对象本身。验证一下: function Fun(params) {} conso原创 2021-06-03 18:18:31 · 217 阅读 · 2 评论 -
回望Javascript:执行上下文/作用域链/闭包
文章目录1.执行上下文2.执行上下文栈3.作用域4.作用域链5.闭包6.内存溢出与内存泄露1.执行上下文执行上下文是用来预处理JS代码的执行上下文栈是用来管理执行上下文的JS代码执行时它的代码位置分为一个全局代码和函数内的代码,因此执行上下文分为全局执行上下文和函数执行上下文,全局执行上下文在执行全局代码前会创建一个全局执行上下文环境将window将其确定为全局执行上下文;并且对全局数据进行一个预处理,这里面就包括:var 定义的全局变量设为undefined,并且将其添加为window原创 2021-06-08 18:14:05 · 238 阅读 · 2 评论