十二、let和const 的区别
let和const很相似 , 但是let 命令不存在变量提升 , 如果在 let 前使用 , 会导致报错 。 如果块区中存在 let 和 const 命令 , 就会形成封闭作用域 。 不允许重复声明 。 const定义的是常量 , 不能修改 , 但是如果定义的是对象 , 可以修改对象内部的数据 。
十三、内存泄漏
内存泄漏指的是程序中己动态分配的堆内存由于某种原因程序未释放或无法释放引发的各种问题 。
内存泄漏结果:变慢 , 崩溃 , 延迟大等
内存泄漏原因:全局变量 , dom 清空时 , 还存在引用 , 定时器未清除 , 子元素存在引起的内存泄露 。
十四、数组(array)方法
map : 遍历数组 , 返回回调返回值组成的新数组
forEach : 无法 break, 可以用 try/catch 中 throw new Error 来停止
filter : 过滤
some : 有一项返回 true, 则整体为 true
every: 有一项返回 false, 则整体为 false
join: 通过指定连接符生成字符串
push / pop: 末尾推入和弹出 , 改变原数组 ,返回推入/弹出项
unshift / shift: 头部推入和弹出 , 改变原数组 , 返回操作项
sort(fn) / reverse : 排序与反转 , 改变原数组
concat : 连接数组 , 不影响原数组 ,浅拷贝
slice(start end): 返回截断后的新数组 , 不改变原数组
splice(startnumbervalue…): 返回删除元素组成的数组 , value 为插入项 , 改变原数组
indexOf / lastIndexOf(value fromIndex) : 查找数组项 , 返回对应的下标
reduce / reduceRight(fn(prev cur), defaultPrev) : 两两执行 , prev 为上次化简函数的return 值 , cur 为当前值(从第二项开始)
十五、JavaScript 深浅拷贝
浅拷贝:Object.assign
深拷贝:可以通过 JSON.parse(JSON.stringify(object)) 来解决
十六、异步编程的实现方式
1、回调函数
优点:简单、容易理解
缺点:不利于维护、代码耦合高
2、事件监听
优点:容易理解 , 可以绑定多个事件 , 每个事件可以指定多个回调函数
缺点:事件驱动型 , 流程不够清晰
3、发布/订阅(观察者模式)
类似于事件监听 , 但是可以通过‘消息中心’ , 了解现在有多少发布者 , 多少订阅者
4、Promise 对象
优点:可以利用 then 方法 , 进行链式写法;可以书写错误时的回调函数
缺点:编写和理解 , 相对比较难
5、Generator 函数
优点:函数体内外的数据交换、错误处理机制
缺点:流程管理不方便
6、async 函数
优点:内置执行器、更好的语义、更广的适用性、返回的是 Promise、结构清晰
缺点:错误处理机制
十七、面向对象编程思想
基本思想是使用对象 , 类 , 继承 , 封装等基本概念来进行程序设计
优点:
1、易维护
2、易扩展
3、开发工作的重用性、继承性高 , 降低重复工作量 。
4、缩短了开发周期
十八、作用域链
作用域链可以理解为一组对象列表 , 包含 父级和自身的变量对象 , 因此我们便能通过作用域链访问到父级里声明的变量或者函数
十九、原型、原型链、继承
原型:每一个构造函数都有一个 prototype 属性 , 这个属性会在生成实例的时候 , 成为实例对象的原型对象 。 javascript 的每个对象都继承另一个对象 , 后者称为“原型”(prototype)对象 。
原型链:每一个对象都有一个 proto 属性 , 对象的属性和方法 , 有可能定义在自
身 , 也有可能定义在它的原型对象 。 由于原型本身也是对象 , 又有自己的原型 , 所
以形成了一条原型链(prototype chain) 。
继承:继承就是在子类构造函数中继承父类构造函数的私有属性和原型属性 。 我们
在子类构造函数中使用 call 或 apply 方法调用父类构造函数并改变其 this 指向为
子类构造函数的 this , 此时子类的构造函数就继承了父类的私有属性和私有方法 。
将父类的实例化对象赋值给子类的原型对象 , 此时子类就继承了父类的原型属性和
原型方法 。
二十、逐进增强和优雅降级
逐进增强:针对低版本浏览器进行构建页面 , 保证最基本的功能 , 然后再针对高版本浏览器进行效果、交互等改进和追加功能达到更好的用户体验 。
优雅降级:一开始就构建完整的功能 , 然后再针对低版本浏览器进行兼容
【浏览器|前端人必看的JS面试题汇总】前端开发虽然是一项实践性较强的工作 , 但是理论知识也是非常重要的 , 想要在众多求职者中脱颖而出 , 就要理论基础与实操技能两手抓 。 如果你连最基本的理论基础都没有掌握好 , 那面试官又怎么会相信你的技能水平能又多高呢?所以 , 建议每个前端人在找工作之前都能熟记上面的知识点 , 能够帮助你更轻松地拿到offer哦~
推荐阅读
- 为什么浏览器没有声音 为什么没有声音
- 如何清理谷歌浏览器的浏览痕迹和缓存 谷歌浏览器怎么删除浏览痕迹页面
- 谷歌浏览器怎么访问谷歌学术 谷歌需不需要加速器
- 怀旧服战士必刷声望,魔兽世界怀旧服猎人必刷声望-
- 怎么把ie浏览器改为360浏览器-360浏览器怎么改ie浏览器-
- 形容女人必须爱自己的诗词?表达爱一个女人的诗句
- 内存|FireFox 105版浏览器即将发布 内存不够时不再“自杀”
- 怎么让浏览器默认为IE?怎样把IE浏览器设为默认浏览器
- 家具人必须懂的10种木材 家具木材
- 怎么清除谷歌浏览器的缓存,谷歌浏览器如何清除网页缓存-