前端面试题二

前端面试题(二) 阅读详情

ES6新特性有哪些?

  1. 变量声明:由var变为let和const;
  2. 模板字符串:使用反引号 `` ;在模板字符串里面支持换行,并可以在里面使用${}来包裹一个变量或表达式;
  3. 解构赋值:有数组解构和对象解构,可以快速获取数组和对象的值;
  4. 扩展运算符:在ES6中用…来表示展开运算符,它可以将数组或者对象进行展开;
  5. 箭头函数:函数的快捷写法,不需要通过function关键字创建函数,并且可以省略return关键字,但函数体内的this对象指的是定义时所在的对象,而不是使用时所在的对象;
    化简规则:
    Function 变成 =>;
    只有1个参数可以省略小括号;
    没有参数或者有多个参数不能省略小括号;
    函数体内只有一行可以省略大括号,如果有返回值return,则return也要省略;
    函数体内有多行,不能省略大括号;
  6. 对象的简化赋值:对象赋值时如果属性名和变量名一致可以简写
  7. 类的支持:ES6中添加了对类的支持,引入了class关键字。JS本身就是面向对象,ES6中提供的类实际上只是JS原型模式包装。现在有了class,对象的创建,继承更直观,父类方法的调用,实例化,静态方法和构造函数更加形象化。

JavaScript 中,如何判断两个对象是否相等?

两个Object类型对象,即使拥有相同属性、相同值,当使用 == 或 === 进行比较时,也不认为他们相等。这就是因为他们是通过引用(内存里的位置)比较的,不像基本类型是通过值比较的。

//浅拷贝指向同一内存的时候,此时两个对象相等。
var obj1 = {
    name: "xiaoming",
    age: "18"
};
 
var obj2 = {
    name: "xiaoming",
    age: "18"
};
 
var obj3 = obj1;
 
console.log(obj1 === obj3); // true
 
console.log(obj2 === obj3); // false

说说你对promise的理解

Promise的含义:

promise是异步编程的一种解决方法。
所谓promise,简单说是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果,从语法上说,promise是一个对象,从它可以获取异步操作的消息,promise提供了统一的API,各种异步操作都可以用同样的方法进行处理。

Promise对象的特点:

(1)对象的状态不受外界影响,promise对象代表一个异步操作,有三种状态,pending(进行中)、fulfilled(已成功)、rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态,这也是promise这个名字的由来“承若”;
(2)一旦状态改变就不会再变,任何时候都可以得到这个结果,promise对象的状态改变,只有两种可能:从pending变为fulfilled,从pending变为rejected。这时就称为resolved(已定型)。如果改变已经发生了,你再对promise对象添加回调函数,也会立即得到这个结果,这与事件(event)完全不同,事件的特点是:如果你错过了它,再去监听是得不到结果的。

有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。

Promise也有一些缺点。首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。第三,当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。

Promise的用法:

是一个构造函数,这个构造函数里有两个参数,分别是:resolve(成功之后的回调函数)、reject(失败之后的回调函数)。

因为promise表示的是一个异步操作,每当我们new一个promise实例,就表示一个具体的异步操作,那么这个异步操作的结果就只能有两种状态:成功/失败,两者都需要回调函数resolve/reject返回。所以内部拿到操作的结果后,无法使用return把操作结果返回给调用者,这时候只能用回调函数的形式来把成功或失败的结果返回给调用者。

vue中watch和computed区别

监听属性watch

  • 不支持缓存,数据变,会直接触发相应的操作;
  • watch支持异步;
  • 监听数据必须是data中声明过或者父组件传递过来的props中的数据。

计算属性computed

  • 支持缓存,只有依赖数据发生改变,才会重新进行计算;
  • 不支持异步,当computed内有异步操作时无效,无法监听数据的变化;
  • computed属性值会默认走缓存,计算属性是基于他们的相应依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值。

Vue-router 中hash模式和history模式的区别

外观:

hash模式url带#号,history模式不带#号。

功能:
hash模式url里面永远带着#号,开发当中默认使用这个模式。如果用户考虑url的规范那么就需要使用history模式,因为history模式没有#号,是个正常的url,适合推广宣传;
比如我们在开发app的时候有分享页面,那么这个分享出去的页面就是用vue或是react做的,咱们把这个页面分享到第三方的app里,有的app里面url是不允许带有#号的,所以要将#号去除那么就要使用history模式,但是使用history模式还有一个问题就是,在访问二级页面的时候,做刷新操作,会出现404错误,那么就需要和后端人配合,让他配置一下apache或是nginx的url重定向,重定向到你的首页路由上就ok了。

Vuex的相关知识

详见

Vue生命周期

beforeCreate

实例初始化之后,this指向创建的实例,不能访问到data、computed、watch、methods上的方法和数据,常用于初始化非响应式变量。

created

实例创建完成,可访问data、computed、watch、methods上的方法和数据,未挂载到DOM,不能访问到 e l 属 性 , el属性, el属性,ref属性内容为空数组,常用于简单的ajax请求,页面的初始化。

beforeMount

在挂载开始之前被调用,beforeMount之前,会找到对应的template,并编译成render函数。

mounted

实例挂载到DOM上,此时可以通过DOM API获取到DOM节点,$ref属性可以访问
常用于获取VNode信息和操作,ajax请求。

beforeupdate

响应式数据更新时调用,发生在虚拟DOM打补丁之前,适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器。

updated

虚拟 DOM 重新渲染和打补丁之后调用,组件DOM已经更新,可执行依赖于DOM的操作,避免在这个钩子函数中操作数据,可能陷入死循环。
beforeDestroy

实例销毁之前调用。这一步,实例仍然完全可用,this仍能获取到实例,常用于销毁定时器、解绑全局事件、销毁插件对象等操作。

destroyed

实例销毁后调用,调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

理解vue的单向数据流

所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外改变父级组件的状态,从而导致你的应用的数据流向难以理解。

额外的,每次父级组件发生更新时,子组件中所有的 prop 都将会刷新为最新的值。这意味着你不应该在一个子组件内部改变 prop。如果你这样做了,Vue 会在浏览器的控制台中发出警告。

这里有两种常见的试图改变一个 prop 的情形:

这个 prop 用来传递一个初始值;这个子组件接下来希望将其作为一个本地的 prop 数据来使用。在这种情况下,最好定义一个本地的 data 属性并将这个 prop 用作其初始值:

props: ['initialCounter'],
data: function () {
  return {
    counter: this.initialCounter
  }
}

这个 prop 以一种原始的值传入且需要进行转换。在这种情况下,最好使用这个 prop 的值来定义一个计算属性:

props: ['size'],
computed: {
  normalizedSize: function () {
    return this.size.trim().toLowerCase()
  }
}

注意在 JavaScript 中对象和数组是通过引用传入的,所以对于一个数组或对象类型的 prop 来说,在子组件中改变这个对象或数组本身将会影响到父组件的状态。

props: {
  list: {
    type: Array,
    default: (() => [])
  }
},
methods: {
  addFn () {
    this.list.push('newValue')
  }
}

单向数据流:父级 prop 的更新会向下流动到子组件中,每次父级组件发生更新时,子组件中所有的 prop 都将会刷新为最新的值。

Darknet-Yolov3 移植过程 本教程面向使用寒武纪平台进行深度学习推理任务的开发者。针对当前主流检测网络darknet-yolov3,进行寒武纪平台的移植。开发者对照移植过程,能够利用寒武纪智能处理器设备完成多种场景的目标检测任务。本实验代码基于 Neuware 1.6.1 与 Python 2.7 环境。 阅读详情

相关推荐

保姆级教程:在Ubuntu 20.04上从源码编译Apollo自动驾驶平台(含GPU环境配置)

本文提供了一份详细的Ubuntu 20.04上从源码编译Apollo自动驾驶平台的保姆级教程,包括GPU环境配置、Docker部署和编译构建等关键步骤。通过实战经验和避坑指南,帮助开发者高效完成Apollo平台的编译和验证,适用于自动驾驶技术研究和应用开发。

weixin_30876945的博客 409

js中 return在 if(){} 和function(){} 中的作用

1.if() return ture ; if执行语句中只有一句代码可以省略花括号,当进入if,遇到return则后面的代码不再执行; 2.function show(a,b){ return a+b; } 在函数中return的作用是返回函数值并退出函数;如果函数体中return后面还有代码也不会执行了 3.在箭头函数中,如果函数体内只有一行代码,可以省略{} 和return (a,b)=>a+b ...

muyejiang的博客 3895

NSFC结题报告下载脚本失效?3步教你手动修复下载按钮问题(2024最新版)

针对NSFC官网域名变更导致结题报告下载脚本失效的问题,本文提供了详细的手动修复指南。通过三步操作,教你如何修改用户脚本的域名匹配规则,恢复下载按钮功能,确保NSFC结题报告下载器能继续高效工作。

vscode6remote的博客 751

java返回值,不用return如何得到返回值

在一个方法A中调用没用返回值的方法B,如何得到方法B中的值,请各位大哥指导

wcqlwyt的博客 2313

“傻瓜”学计量——双重差分DID3(多期双重差分原理+解决方案CSDID原理)

“傻瓜”学计量——双重差分DID3(多期双重差分原理+解决方案CSDID原理)

nnpersistent的博客 5057

发那科FOCAS 1/2文档——核心库文件

在开始开发前,明确目标 CNC 的具体型号、连接方式(HSSB/TCP/IP)、软件版本和配置(如轴数、程序号位数),并据此正确配置开发环境和编译选项。开发时需要包含相应的头文件。这是开发跨平台应用时需要特别注意的地方。这是开发应用时必须了解的核心文件。

snailiot的博客 1021

箭头函数省略了return关键字。for..in 和for...of的区别

使用箭头函数更加简洁了函数 setTimeOut(function()){},1000) ====>         setTimeOut(()=>{},1000)   省略了return关键字 let arr=[1,3,5] arr.filter(item=>item===3)     [3]   下面看一个箭头函数去掉数组里的undefined返回新的数组: ...

肖肖肖丽珠的博客 1563

深入浅出ISP:用RKISP2.x Tuner工具理解AWB、AE、HDR等核心模块的实战调参

本文深入解析RKISP2.x Tuner工具在ISP图像处理中的实战应用,重点探讨AWB、AE、HDR等核心模块的调参技巧。通过环境搭建、调试工具使用和实际案例,帮助开发者掌握如何在不同光照条件下优化图像质量,实现精准的白平衡、曝光控制和动态范围处理。

weixin_26802933的博客 487

解决回调地狱问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34037515的博客 260

GD32F103RCT6/GD32F303RCT6(6.2)USART串口实战:从寄存器配置到DMA高效传输

本文详细介绍了GD32F103RCT6和GD32F303RCT6的USART串口通信实战,从寄存器配置到DMA高效传输的全过程。通过具体的代码示例和优化建议,帮助开发者快速掌握串口通信的关键技术,提升嵌入式开发效率。特别强调了DMA在高速数据传输中的优势和应用技巧。

weixin_33725239的博客 308

别再对着数据手册画图了!用HFSS 2023 R2快速复现ESP-01的PCB天线(附模型文件)

本文详细介绍了使用HFSS 2023 R2逆向复现ESP-01 PCB天线的五个关键步骤,包括逆向工程准备、高效建模技巧、材料与边界设置、激励与求解配置以及结果分析与设计验证。通过参数化建模和智能边界检测,大幅提升仿真效率,适用于WIFI和蓝牙设备的射频设计优化。

weixin_30832143的博客 76

持续集成(Continuous integration)

一、基本概念 1、持续集成   持续集成(Continuous integration,简称CI),简单来说持续集成就是频繁地(一天多次)将代码集成到主干。   每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成错误。      持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,可以确定新代码和原有代码能否正确地集成...

anmi3721的博客 1929

获取抖音中x-secsdk-csrf-token的方法

获取抖音中x-secsdk-csrf-token的方法

sh_moranliunian的博客 2021

前端常见面试题(二)————前端

前端常见面试题(二)————前端 小小的提一下,面试时,面试官很喜欢看你的项目实践,就看你做过什么项目,如果一个都不写,可能会跪,然后围着你的项目去问细节。(自己做些项目很重要) 正文部分: 1.var,let,const的区别: (1).var可以变量提升:啥是变量提升? var a=10 //全局变量 function fn() { console.log(a);//输出un...

songfei_dream的专栏 7410

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

前端面试题总结(二)

前端面试

jia嘉ioo的博客 1061

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

前端面试题总汇二

前端面试题总汇二1. ES5新增的遍历方法2. 箭头函数和普通函数的区别3. ES6的暂时性死区4. JS事件流模型5. 事件委托是什么,有什么好处 1. ES5新增的遍历方法 迭代遍历方法:forEach()、map()、filter()、some()、every() 判断方法:isArray() forEach跟jQuery的each用法类似。语法是: array.forEach(function(currentValue, index, arr)) currentValue: 数组当前项的值 i

weixin_45060872的博客 321

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

二、前端面试题总结篇

3、

2301_80232843的博客 858

前端热门面试题二

在前端开发中,构建工具扮演着至关重要的角色,它们能够自动化处理各种任务,如代码压缩、模块打包、代码转换、静态资源管理等。我使用过Webpack、Gulp和Rollup这三种前端构建工具,它们各自具有独特的特点和优势。

jun778895的博客 1251

前端面试题集合二

前端面试题集合二

前端金牌摸鱼达人 28万+

前端热门面试题 二

Hash路由和History路由都是前端路由的常见实现方式,它们各有优缺点。在选择时,需要根据项目的具体需求、目标用户群体以及服务器配置等因素进行综合考虑。例如,如果项目需要兼容老旧浏览器或不需要特别关注SEO,那么Hash路由可能是一个更简单的选择。而如果项目追求更好的用户体验和SEO效果,并且服务器配置得当,那么History路由可能更加合适。

m0_70066267的博客 1145

前端攻略系列(二) - 前端各种面试题

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。需要完整面试题的朋友可以点击蓝色字体获取[外链图片转存中…(img-lFQzcNVQ-1712648543829)][外链图片转存中…(img-wFlHpK3Z-1712648543829)][外链图片转存中…(img-PDcoXv9F-1712648543830)]

2401_84092508的博客 600

2022年10月 前端面试题总结——(二)

前端面试题总结,更加的精炼直接。

爱学习的小王的博客 1万+

初级前端高频面试题总结二

1:cookies、sessionStorage和localStorage解释及区别 1)相同点是都是保存在浏览器端、且同源的 2)cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只...

前端金牌摸鱼达人 833
上一篇: Vuex的相关知识
下一篇: 前端面试题三
勋染
博客等级 码龄5年 323粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勋染

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值