当前位置:首页 > 科技  > 软件

前端的十个问题,你知道几个?

来源: 责编: 时间:2023-12-15 17:17:00 312观看
导读01、null和undefinedundefined是全局对象的一个属性,当一个变量没有赋值或者访问一个对象不存在的属性,这时候都是undefined。null:表示是一个空对象。在需要释放一个对象的时候,直接赋值为null即可。02、箭头函数箭头函

01、null和undefined

undefined是全局对象的一个属性,当一个变量没有赋值或者访问一个对象不存在的属性,这时候都是undefined。vnB28资讯网——每日最新资讯28at.com

null:表示是一个空对象。在需要释放一个对象的时候,直接赋值为null即可。vnB28资讯网——每日最新资讯28at.com

02、箭头函数

箭头函数是ES6新增的,简化函数的定义。箭头函数没有自身的this,所以this是从外部获取的,也就是继承了外部的执行上下文。vnB28资讯网——每日最新资讯28at.com

箭头函数不能作为构造函数,如果通过call()或者apply()调用箭头函数的时候,不需要绑定this,直接传入参数即可。vnB28资讯网——每日最新资讯28at.com

03、call、apply和bind的作用

bind、call和apply都是改变函数this的指向。 bind在改变this的时候,返回的是一个改变执行上下文的函数,不会立即执行。 call和apply在改变this指向同时也执行该函数。 bind只有一个参数,call和apply可接收多个参数,第一个参数是this的指向。apply的第二参数是一个数组。vnB28资讯网——每日最新资讯28at.com

04、函数的this

this是函数的执行上下文,分为全局执行上下文和函数执行上下文。vnB28资讯网——每日最新资讯28at.com

this在严格模式下,指向的是undefined,非严格模式下默认指向window。vnB28资讯网——每日最新资讯28at.com

函数的this,在函数被调用的时候,指向的是函数的调用者,也就是谁调用,就指向谁。vnB28资讯网——每日最新资讯28at.com

如果通过new 构造函数创建一个新的对象,那么构造函数的中的this指向新对象本身。vnB28资讯网——每日最新资讯28at.com

普通函数不继承this,箭头函数没有this,它是继承外部的this。vnB28资讯网——每日最新资讯28at.com

05、变量提升

变量提升是指js的变量和函数在编译的时候提升到最前面。vnB28资讯网——每日最新资讯28at.com

造成变量提升的现象,是因为使用var关键字声明的变量,变量提升的时候,只有声明在提升,变量赋值并没有提升,在变量初始化之前访问该变量,就会返回undefined。使用let或者const声明变量,就形成暂时性死区,在let或者const声明变量之前访问变量会报错。vnB28资讯网——每日最新资讯28at.com

06、map和forEach的区别

map有返回值,可以开辟新的空间,return返回一个长度和原数组长度一样的新数组。vnB28资讯网——每日最新资讯28at.com

forEach函数没有返回值,返回的undefined。vnB28资讯网——每日最新资讯28at.com

map的处理速度比forEach快,返回新数组,这样方便链式调用其他数组方法,比如filter、reduce等等。vnB28资讯网——每日最新资讯28at.com

07、怎么理解事件循环、微任务和宏任务

浏览器的事件循环是执行js代码的时候,遇见同步任务,直接推进调用栈中执行,遇到异步任务时候,将异步任务挂起,等到异步任务有返回之后再推到任务队列中。vnB28资讯网——每日最新资讯28at.com

当调用栈中所有的同步任务执行完成,将任务队列中的任务按照顺序执行。重复执行这一系列的行为就是事件循环。vnB28资讯网——每日最新资讯28at.com

异步任务又分为宏任务和微任务。宏任务就是任务队列中的任务,每一个宏任务中包含一个微任务队列;vnB28资讯网——每日最新资讯28at.com

微任务:就是等宏任务中的主要功能执行完成后,渲染引擎并没有立即执行下一个宏任务,而是执行当前宏任务中的微任务。vnB28资讯网——每日最新资讯28at.com

宏任务包含:script标签内的代码、定时器、Ajax请求vnB28资讯网——每日最新资讯28at.com

微任务:PromisevnB28资讯网——每日最新资讯28at.com

08、跨站点请求伪造CSRF

攻击者盗用用户的身份,以用户的身份发起恶意请求。但是对于服务器来说,这个请求是合理的。vnB28资讯网——每日最新资讯28at.com

预防CSR攻击方法:vnB28资讯网——每日最新资讯28at.com

  1. 使用验证码,强烈要求用户和应用进行交互
  2. 在http中referer字段,检查是否是从正确的域名访问过来,它记录了http请求的来源地址
  3. 使用token验证,在http请求头中添加token字段,在服务器端设置一个拦截器来验证token,如果token无效,那么拒绝访问

09、XSS攻击

XSS攻击是脚本攻击,攻击者通过向web页面插入script代码,在用户浏览这个页面时候,执行script的脚本代码,达到攻击的目的。vnB28资讯网——每日最新资讯28at.com

预防:对数据进行严格的输出编码,比如URL编码、css编码、JavaScript编码。vnB28资讯网——每日最新资讯28at.com

10、浏览器如何渲染页面的

浏览器从服务器获取到html后,将html转化为DOM树,再将css样式转化为对应的stylesheet,根据DOM树和stylesheet绘制成页面。vnB28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-46467-0.html前端的十个问题,你知道几个?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 解锁RocketMQ秘籍:如何保障消息顺序性?

下一篇: Python字符串的匹配算法

标签:
  • 热门焦点
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    除了华为每年新发布的旗舰手机系列,上亿花粉更加期待鸿蒙系统每次的跨版本大更新。8月4日,HarmonyOS 4于HDC 2023正式发布,这也是该系统历经四年的再
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • 由于成本持续增加,笔记本产品价格预计将明显上涨

    根据知情人士透露,由于材料、物流等成本持续增加,笔记本产品价格预计将在2021年下半年有明显上涨。进入6月下旬以来,全球半导体芯片缺货情况加剧,显卡、处理器
  • 北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top