 
 获得徽章 7
- #每天一个知识点# 生命周期
 生命周期指的是Vue组件从创建到销毁经历的一系列的过程
 创建前后
 beforeCreate - 组件创建之前,无法获取data中的数据
 created - 组件创建完成后,可以获取数据
 渲染前后
 beforeMount - 组件挂载到DOM之前
 mounted - 组件挂载完毕,可以获取DOM节点
 更新前后
 beforeUpdate - 响应式数据更新时调用,此时虽然响应式数据更新了,但是对应的真实 DOM 还没有被渲染
 updated - 在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。此时 DOM 已经根据响应式数据的变化更新了。调用时,组件 DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用
 销毁前后
 beforeDestroy - 实例销毁之前调用。这一步,实例仍然完全可用,this 仍能获取到实例
 destroyed - 实例销毁后调用,调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁展开评论点赞
- #每天一个知识点# Hash模式
 基于浏览器的hashchange事件,当url发生变化时,通过 window.location.hash 获取地址上的hash值,并通过Router类,配置routes对象设置与hash值对应的组件内容
 优点:
 hash值会出现在url中,但是不会被包含在http请求中,因此hash值改变不会重新加载页面
 hash改变会触发hashchange事件,能控制浏览器的前进后退
 兼容性好
 缺点:
 地址中携带#,不美观
 只可修改#后面的部分,因此只能设置与当前URL同文档的URL
 hash有体积限制,故只可以添加短字符串
 设置的新值必须与原来不同才会触发hashchange事件,并将记录添加到栈中
 每次URL的改变不属于一次http请求,所以不利于seo优化展开评论点赞
- #每天一个知识点# 路由hash模式和history模式的区别
 hash 模式是一种把前端路由的路径用 # 拼接在真实 url 后面的模式。当 # 后面的路径发生变化时,浏览器并不会重新发起请求,而是会触发 onhashchange 事件。
 hash模式的特点:
 hash变化会触发网页跳转,即浏览器的前进和后退
 hash 可以改变 url ,但是不会触发页面重新加载(hash的改变是记录在 window.history 中),即不会刷新页面。也就是说,所有页面的跳转都是在客户端进行操作。因此,这并不算是一次 http 请求,所以这种模式不利于 SEO 优化。hash 只能修改 # 后面的部分,所以只能跳转到与当前 url 同文档的 url
 hash 通过触发 hashchange 事件,来监听 hash 的改变,借此实现无刷新跳转的功能
 hash 永远不会提交到 server 端(可以理解为只在前端自生自灭)展开1点赞
- #每天一个知识点#
 执行上下文
 执行上下文是评估和执行 JavaScript 代码的环境的抽象概念。每当 Javascript 代码在运行的时候,它都是在执行上下文中运行
 执行上下文有三种类型:
 全局执行上下文:任何不在函数内部的都是全局执行上下文,它首先会创建一个全局的window对象,并且设置this的值等于这个全局对象,一个程序中只有一个全局执行上下文
 函数执行上下文: 每当一个函数被调用时, 都会为该函数创建一个新的上下文。每个函数都有它自己的执行上下文,不过是在函数被调用时创建的。函数上下文可以有任意多个。每当一个新的执行上下文被创建,它会按定义的顺序(将在后文讨论)执行一系列步骤
 eval函数执行上下文:执行在 eval 函数内部的代码也会有它属于自己的执行上下文展开评论点赞
- #每天一个知识点#
 Undefined与Null
 Undefined 和 Null 都是基本数据类型,这两个基本数据类型分别都只有一个值,就是 undefined 和 null
 undefined 代表的含义是未定义,null 代表的含义是空对象。一般变量声明了但还没有定义的时候会返回 undefined,null主要用于赋值给一些可能会返回对象的变量,作为初始化
 undefined 在 JavaScript 中不是一个保留字,这意味着可以使用 undefined 来作为一个变量名,但是这样的做法是非常危险的,它会影响对 undefined 值的判断。我们可以通过一些方法获得安全的 undefined 值,比如说 void 0
 typeof null 的返回值为object,且undefined == null返回true展开评论点赞