❤ 写在前面
如果觉得对你有帮助的话,点个小❤❤ 吧,你的支持是对我最大的鼓励~
个人独立开发wx小程序:AI私厨,需要使用wx打开,感谢支持!
文章目录
- ❤ 写在前面
- 前言
- 一、js数据类型
- 二、Vue2和Vue3的区别
- 三、组件传值
- 四、watch和computed的区别
- 五、Vue双向绑定
- 六、闭包是什么
- 七、项目性能优化
- 八、es6了解多少
- 九、闭包
- 十、== 和 === 的区别
- 十一、内存泄漏
- 十二、script 引入方式
- 十三、rem与em的区别
- 十四、css盒模型
- 十五、组件生命周期
- 十六、length和size的区别
- 十七、watch和computed的区别
- 十八、浅拷贝和深拷贝
- 十九、如何做权限控制
- 二十、vuex
- 二十一、路由模式
- 二十二、路由懒加载
- 二十二、虚拟DOM
- 二十三、浏览器从输入URL到页面加载的全过程
- 二十四、为什么使用vue
- 二十五、Vue的优点
- 二十六、0.1加0.2等于多少
- 二十七、什么是promise
- 二十八、伪类和伪元素
- 二十九、如何判断一个元素是否在可视区域中?
- 三十、前端如何做图片压缩
- 三十一、Vue 中 for循环为什么加 key?
- 三十二、session_key是什么
- 三十三、post和get的区别
- 三十四、序列化
- 三十五、常用的状态码
- 三十六、h5和单页面的区别
- 三十七、跨域
- 三十八、重绘和重排的区别
- 三十九、防抖与节流
前言
结合最近的面试,整理了一下 初中级前端开发工程师,会问到的前端问题,希望对你有帮助~
一、js数据类型
基本数据类型
Number、String、Boolean、Null、Undefined、Symbol、bigInt
引用数据类型
object、Array、Date、Function、RegExp
二、Vue2和Vue3的区别
- Vue2 ES5的objective.definePropert()对数据进行劫持结合发布订阅模式来实现的数据双向绑定。 Vue3 使用了 es6 的 ProxyAPI 对数据代理。
- Vue3支持组件拥有多个根节点
- API类型不同
- 生命周期不同
- 父子传参不同
- 定义变量与方法不同
- 指令与插槽不同
- main.js文件不同
三、组件传值
父组件通过props将属性值传递给子组件。
子组件要给父组件传递消息可以通过$emit()调用父组件定义的方法
四、watch和computed的区别
watch主要是监听数据变化,可以监听数据来源的三个部分:props,data,computed内的数据,然后它还提供两个参数(new,old),顺序一定是新值、旧值。
computed主要是处理逻辑运算,computed来存储需要处理的数据值,它有存储的机制,只有改变时才执行
五、Vue双向绑定
双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变
就是用这个方法来定义一个值。当调用时我们使用了它里面的get方法,当我们给这个属性赋值时,又用到了它里面的set方法
六、闭包是什么
闭包就是能够读取其他函数内部变量的函数,闭包基本上就是一个函数内部返回一个函数
好处
可以读取函数内部的变量
将变量始终保持在内存中
可以封装对象的私有属性和私有方法
坏处
比较耗费内存、使用不当会造成内存溢出的问题
七、项目性能优化
减少 HTTP 请求数
减少 DNS 查询
使用 CDN
避免重定向
图片懒加载
减少 DOM 元素数量
减少 DOM 操作
使用外部 JavaScript 和 CSS
压缩 JavaScript、CSS、字体、图片等
优化 CSS Sprite
使用 iconfont
多域名分发划分内容到不同域名
尽量减少 iframe 使用
避免图片 src 为空
把样式表放在 link 中
把 JavaScript 放在页面底部
(至少回答到7,8条吧)
八、es6了解多少
新增模板字符串
箭头函数
for-of(用来遍历数据—例如数组中的值。)
ES6 将 Promise 对象纳入规范,提供了原生的 Promise 对象。
增加了 let 和 const 命令,用来声明变量。
还有就是引入 module 模块的概念
let 命令不存在变量提升,如果在 let 前使用,会导致报错
如果块区中存在 let 和 const 命令,就会形成封闭作用域
不允许重复声明
const定义的是常量,不能修改,但是如果定义的是对象,可以修改对象内部的数据
九、闭包
闭包就是能够读取其他函数内部变量的函数
闭包基本上就是一个函数内部返回一个函数
好处
可以读取函数内部的变量
将变量始终保持在内存中
可以封装对象的私有属性和私有方法
坏处
比较耗费内存、使用不当会造成内存溢出的问题
十、== 和 === 的区别
== 是非严格意义上的相等,值相等就相等
=== 是严格意义上的相等,会比较两边的数据类型和值大小,值和引用地址都相等才相等
十一、内存泄漏
定义:程序中已动态分配的堆内存由于某种原因程序未释放或无法释放引发的各种问题。
js中可能出现的内存泄漏情况:变慢,崩溃,延迟大等
js中可能出现的内存泄漏原因
(1)全局变量
(2)dom 清空时,还存在引用
(3)定时器未清除
(4)子元素存在引起的内存泄露